一、原型模式的概念
原型模式是创建型模式,通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例
被复制的实例就是我们所称的“原型”,这个原型是可定制的
客户端(Client):提出创建对象的请求
抽象原型(Prototype):一个Java接口或Java抽象类,此角色给出所有的具体原型类所需的接口
具体原型(ConcretePrototype):被复制的对象
二、原型模式的实现
//抽象原型
public Interface Prototype{
public Object clone();
}
//具体原型
public class ConcretePrototype implements Prototype{
public Object clone(){
return new ConcretePrototype();
}
}
//客户端
public class Client{
private Prototype prototype;
public Client(Prototype prototype){
this.prototype = prototype;
}
public Object create(){
return prototype.clone();
}
}
三、原型模式的应用
在需要重复地创建相似对象时可以考虑使用原型模式
四、原型の其他问题
Java中的原型模式(克隆)
public class Prototype implements Cloneable{ private Prototype prototype; //重写克隆方法 public Prototype clone(){ try{ prototype = (Prototype)super.clone(); }catch(CloneNotSupportedException e){ e.printStackTrace(); } return prototype; } }
public class ConcretePrototype extends Prototype{ public void method(){ //TODO } }
public class Client{ public static void main(String[] args){ ConcretePrototype concreteProtopyte = new ConcretePrototype(); ConcretePrototype newInatance = (ConcretePrototype)concreteProtopyte.clone(); } }
浅复制和深复制
如果需要实现浅克隆,通过覆盖Object类的clone()方法可以实现。 如果需要实现深克隆,可以通过覆盖Object类的clone()方法实现,也可以通过序列化(Serialization)等方式来实现。
五、Reference
六、Resource