原型模式
1.定义
用原型模式指定创建对象的种类,并通过拷贝这些原型创建新的对象。
2.示例代码
/*声明一个克隆自身的接口*/ public interface Prototype{ /*克隆自身的方法*/ public Prototype clone(); } /*克隆的具体实现对象*/ public class ConcretePrototype implements Prototype{ public Prototype clone(){ /*最简单的克隆,新建一个自身对象,由于没有属性,就不在复制值了*/ Prototype prototype = new ConcretePrototype(); return prototype; } }
/*使用原型的客户端*/ public class Client{ /*持有需要使用的原型对象接口*/ private Prototype prototype; /*构造方法传入需要使用的原型接口对象*/ public Client(Prototype prototype){ this.prototype = prototype; } /*示意执行某个操作*/ public void operation(){ //需要创建某个原型接口的对象 Prototype pro = prototype.clone(); } }
3.实际应用
原型模式的客户端只知道原型的接口类型,并不知道具体的实现类型,从而减少了客户端对这些具体实现类型的以来,原型模式最大的缺点就在于每个原型的子类都必须实现clone操作,尤其在包含引用类型的对象时,clone方法会比较麻烦,必须要能够递归的让所有的相关对象都要正确的实现克隆。
原型模式的本质:克隆生成对象