用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
一、实现代码
对于工厂模式中,生成产品对象后,无法根据产品对象知道,它是哪个具体的产品,通过原型模式就可以通过拷贝函数clone一个原有的对象,给现在的对象使用,从而创建更多的同类型的对象。
二、适用性
当一个系统应该独立于他的产品创建、构成和表示时,要使用PROTOTYPE模式;以及
1. 当要实例化的类是在运行时刻指定时,例如:动态装载
2. 为了避免创建一个与产品类层次平行的工厂类层次时(工厂类的特点)
3. 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更加方便一些。
三、参与者
ProtoType 声明一个克隆自身的接口。
ConcretType 实现一个克隆自身的操作。
Client 让一个原型克隆自身从而创建一个新的对象。
四、效果
1. 对客户隐藏了具体的产品类,
2. 客户无需改变即可使用特定应用相关的类
3. 运行时刻增加删除产品
4. 改变值以指定新对象
5. 改变结构以指定新对象
6. 减少子类的构造
7. 用类动态配置应用, 一些运行时刻环境允许你动态将类加载到应用中
注意:在c++中clone函数必须搞清是使用浅拷贝还是深拷贝。
参考:
网友评论