设计模式----原型模式

1.原型模式代码

import java.util.HashMap;
import java.util.Map;

public abstract class CustFile implements Cloneable {
protected String name;

public Object clone(){
    Object clone = null;
    try {
        clone = super.clone();
    } catch (CloneNotSupportedException e) {
        e.printStackTrace();
    }
    return clone;
}

public void printName() {
    System.out.println("-------"+hashCode()+"--------"+name+"-----");
}

public String getName() {
    return name;
}

}

class A4File extends CustFile{
A4File(String name){
this.name = name;
}
}

class A2File extends CustFile{
A2File(String name){
this.name = name;
}
}

class A6File extends CustFile{
A6File(String name){
this.name = name;
}
}

class SysCache{
public static Map<String,CustFile> map = new HashMap<String,CustFile>();

public static Object getCustFile(String name){
    CustFile custFile = map.get(name);
    return custFile.clone();
}

public static void loadCache(){
    A4File a4File = new A4File("A4");
    map.put(a4File.getName(),a4File);
    A2File a2File = new A2File("A2");
    map.put(a2File.getName(),a2File);
    A6File a6File = new A6File("A6");
    map.put(a6File.getName(),a6File);
}

public static void main(String[] args) {
    loadCache();
    Object a21 = getCustFile("A2");
    CustFile custFile = (CustFile)a21;
    custFile.printName();

    Object a22 = getCustFile("A2");
    CustFile custFile0 = (CustFile)a22;
    custFile0.printName();

    Object a23 = getCustFile("A2");
    CustFile custFile1 = (CustFile)a23;
    custFile1.printName();

    Object a24 = getCustFile("A2");
    CustFile custFile2 = (CustFile)a24;
    custFile2.printName();
}

}

2.关键点

原型模式主要是为了克隆一个类,主要的实现是实现cloneable 接口 同时写clone方法,调用super.clone().

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值