Prototype
目的
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
动机
假设有一个框架,并希望增加一些表示符、休止符等对象来构造。我们可以为每个对象构造一个子类,但如果对象太多,子类太多不方便管理。因此为了解决这个问题,我们可以让框架通过拷贝或克隆一个graphic子类的实例来创建一个graphic。
使用范围
- 希望动态加载类的实例时;
- 为了避免创建一个与产品类层次平行的工厂类层次;
- 当一个类的实力只能有几个不同状态组合中的一种时,可以通过建立一定的数量的原型,并通过克隆其建立对象;
效果
- 动态添加和删除产品(客户能直接接触产品)
- 随时改变结构,只需要通过修改参数值就可以生成新的对象;
- 与factory method相比,子类的构造会更少;
由于是基于clone操作,因此内部存在不支持拷贝的对象会难以实现
代码示例
1 |
|