意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
动机:在软件系统中,经常面临这“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。
适用性:当一个系统应该独立于它的产品创建、构成和表示时;当要实例化的类是在运行时指定时;为了避免创建一个与产品类层次平行的工厂类层次时;当一个类的实例只能有几个不同状态组合在一起时。
结构:
参与者:
Prototype: 声明一个克隆自身的接口
ConcretePrototype : 实现一个克隆自身的操作
Client : 让一个原型克隆自身从而创建新的对象
协作:客户请求一个原型克隆自身
效果:
可以运行时增加和删除产品
改变值以指定新对象
改变结构可以指定新的对象
减少子类的构造
用类动态配置应用
实现:
代码示例如下:
1 |
|