原型模式-Prototype
名称:
原型模式(Prototype Pattern)-对象创建型模式
问题:
Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype.
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
适用性:
-当一个系统应该独立于它的产品创建、构成和表示时,要使用Prototype模式
-当要实例化的类是在运行时刻指定时,例如,通过动态装载
-为了避免创建一个与产品类层次平行的工厂类层次时
-当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
协作:
客户请求一个原型克隆自身。
优点和缺点:
1、它对客户隐藏了具体的产品类,因此减少了客户知道的名字的数目。此外,用户无需改变即可使用与特定应用相关的类。
2、运行时刻增加和删除产品。
3、改变值以指定新对象。
4、改变结构以指定新对象。
5、减少子类的构造。
6、用类动态配置应用。
解决方案:
1、 模式的参与者
1、Prototype
-声明一个克隆自身的接口。
2、ConcretePrototype
-实现一个克隆自身的操作。
3、Client
-让一个原型克隆自身从而创建一个新的对象。
2.实现方式
public abstract class Prototype implements Cloneable { public Object clone() throws CloneNotSupportedException { Prototype proto = (Prototype) super.clone(); return proto; } }
原型模式通过拷贝一个现有对象生成新对象。浅默认的拷贝为浅拷贝,深拷贝通过重写 Cloneable实现,或者 Serializable读取二进制流。
参考资料
《设计模式:可复用面向对象软件的基础》