- Spring 5 Design Patterns
- Dinesh Rajput
- 266字
- 2021-07-08 09:59:33
Sample implementation of the Prototype design pattern
I am going to create an abstract Account class and concrete classes extending the Account class. An AccountCache class is defined as a next step, which stores account objects in a HashMap and returns their clone when requested. Create an abstract class implementing the Clonable interface.
package com.packt.patterninspring.chapter2.prototype.pattern;
public abstract class Account implements Cloneable{
abstract public void accountType();
public Object clone() {
Object clone = null;
try {
clone = super.clone();
}
catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return clone;
}
}
Now let's create concrete classes extending the preceding class:
Here's the CurrentAccount.java file:
package com.packt.patterninspring.chapter2.prototype.pattern;
public class CurrentAccount extends Account {
@Override
public void accountType() {
System.out.println("CURRENT ACCOUNT");
}
}
Here's how SavingAccount.java should look:
package com.packt.patterninspring.chapter2.prototype.pattern;
public class SavingAccount extends Account{
@Override
public void accountType() {
System.out.println("SAVING ACCOUNT");
}
}
Let's create a class to get concrete classes in the AccountCache.java file:
package com.packt.patterninspring.chapter2.prototype.pattern;
import java.util.HashMap;
import java.util.Map;
public class AccountCache {
public static Map<String, Account> accountCacheMap =
new HashMap<>();
static{
Account currentAccount = new CurrentAccount();
Account savingAccount = new SavingAccount();
accountCacheMap.put("SAVING", savingAccount);
accountCacheMap.put("CURRENT", currentAccount);
}
}
PrototypePatternMain.java is a demo class that we will use to test the design pattern AccountCache to get the Account object by passing a piece of information, such as the type, and then call the clone() method:
package com.packt.patterninspring.chapter2.prototype
.pattern;
public class PrototypePatternMain {
public static void main(String[] args) {
Account currentAccount = (Account)
AccountCache.accountCacheMap.get("CURRENT").clone();
currentAccount.accountType();
Account savingAccount = (Account)
AccountCache.accountCacheMap.get("SAVING") .clone();
savingAccount.accountType();
}
}
We've covered this so far and it's good. Now let's look at the next design pattern.
- 軟件安全技術
- iOS面試一戰到底
- The React Workshop
- C/C++常用算法手冊(第3版)
- Hands-On JavaScript High Performance
- Apache Kafka Quick Start Guide
- Jenkins Continuous Integration Cookbook(Second Edition)
- Python從入門到精通
- 快速入門與進階:Creo 4·0全實例精講
- Cocos2d-x by Example:Beginner's Guide(Second Edition)
- 創意UI:Photoshop玩轉APP設計
- IoT Projects with Bluetooth Low Energy
- 深入分析GCC
- Mastering OpenStack
- Spring Web Services 2 Cookbook