官术网_书友最值得收藏!

  • 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.

主站蜘蛛池模板: 镶黄旗| 奉节县| 连平县| 涟源市| 瓦房店市| 达日县| 延川县| 屯门区| 贵定县| 巴彦淖尔市| 佛坪县| 西乌| 遵义市| 忻州市| 金堂县| 武定县| 克什克腾旗| 玉山县| 邛崃市| 县级市| 咸阳市| 如皋市| 六枝特区| 清涧县| 尼木县| 江安县| 广安市| 万盛区| 宁乡县| 巴东县| 祁阳县| 罗源县| 沂源县| 永吉县| 静乐县| 巴中市| 南召县| 治多县| 兴安县| 云阳县| 淮安市|