原型模式指定创建对象的种类,并且通过拷贝这些原型创建新对象。原型模式允许一个对象在创建另一个对象,根本无需知道任何创建的细节。
工作原理:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝言行自己来实施创建过程。de>de>de>
抽象原型类(Prototypede):定义具有克隆自己的方法的接口。
具体原型类(ConcretePrototype):实现具体的克隆方法。
客户(Client):通过克隆生成一个新的对象。
范例:粘贴拷贝,在de>de>wordde>de>中复制多个笑脸对象。
颜色管理器,颜色管理器首先创建了各种颜色,并将其保存在一个哈希表中,当客户需要时,就返回一个颜色的克隆。
3.画图中的工具栏,工具条上面的每一个按钮都是一个对象。选择后实现的功能就是对象行为的开始,程序先登记每个对象,存放在对象池中。每点一个按钮就动态克隆一个原型。
优势和缺陷:
原型模式得到了广泛的应用,特别在创建对象成本较大的情况下(初始化需占用较长时间,占用太多CPU资 源或网络资源。另外,如果系统要保存对象的状态,二对象的状态变化很小,或者对象本身占内存不大的时候,也可以配合备忘录模式来应用。如果对象的状态变化 很大,或者对象占用的内存很大,那么采用状态模式会比原型模更好。原型模式的缺点是在实现深层复制时需要编写复杂代码。
应用情景:
1. 类的实例化是动态的。
2. 你需要避免使用分层次的工厂类来创建分层次的对象。
3. 类的实例对象只有一个或很少的几个组合状态。