定义
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
类图
简单使用
class Prototype implements Cloneable {
public Prototype clone(){
Prototype prototype = null;
try{
prototype = (Prototype)super.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return prototype;
}
}
class ConcretePrototype extends Prototype{
public void show(){
System.out.println("原型模式实现类");
}
}
public class Client {
public static void main(String[] args){
ConcretePrototype cp = new ConcretePrototype();
for(int i=0; i< 10; i++){
ConcretePrototype clonecp = (ConcretePrototype)cp.clone();
clonecp.show();
}
}
}
深度拷贝的使用
public class Prototype implements Cloneable {
private ArrayList list = new ArrayList();
public Prototype clone(){
Prototype prototype = null;
try{
prototype = (Prototype)super.clone();
prototype.list = (ArrayList) this.list.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return prototype;
}
}
使用场景
需要类对象比较多并且每个对象的成员变量值有些不一样的时候
总结
原型模式直接拷贝内存内容,比new的速度快,所以性能上会更好。好比有一张白纸,直接写字相当于new,复印相当于clone
参考
http://blog.youkuaiyun.com/zhengzhb/article/details/7393528