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

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

主站蜘蛛池模板: 五寨县| 綦江县| 龙陵县| 正宁县| 玉门市| 祁东县| 汝州市| 德保县| 周宁县| 济南市| 内黄县| 石城县| 明光市| 于田县| 宜章县| 松江区| 邹城市| 宜阳县| 江城| 乳山市| 正定县| 渝北区| 沈阳市| 哈密市| 乌拉特中旗| 怀安县| 开平市| 屏东市| 衡山县| 龙游县| 宿迁市| 永川市| 周口市| 比如县| 怀来县| 万荣县| 南丰县| 开封县| 衡阳市| 盐津县| 昭觉县|