[Design] Protetype Pattern
创建模式是对类的实例化过程的抽象化,分为类的创建模式和对象的创建模式。
类的创建模式
使用继承关系把类的创建过程延迟到子类,从而封装了客户端将得到哪些具体类的信息,并且隐藏了这些类的实例是如何创建和组合在一起的。
对象的创建模式
把对象的创建过程动态的委派给另一个对象,从来动态的决定客户端将得到哪些具体类的实例,以及这些类是实例是如何创建和组合在一起的。
--------------------------------------------------------
原始模型模式
原始模型模式属于对象的创建模式。通过给出一个原型对象来指明所要创建对象的类型,然后通过复制原型对象的方法来创建出更多的同类型的对象。
适用于产品结构可能会有经常性变化的系统。
优点
1. 允许动态的增加或减少产品类。由于创建产品实例的方法是产品类内部具有的,因此,增加新产品对整个结构没有影响。
2. 产品类不需要非得有任何事先确定的等级结构,因为原始模型模式适用于任何的等级结构。
缺点
每一个类都必须配备一个克隆方法。配备克隆方法需要对类的功能进行通盘考虑,对新类问题不大。但对于已经有的类不太容易,特别是不支持串行化或引用含有循环结构的时候。
原始模型模式有两种表现形式:简单形式和登记形式。
简单形式的原始模型模式
- 1、客户角色
客户类提出创建对象的请求。
- 2、抽象原型角色
这是一个抽象角色,一般有接口或抽象类实现。此角色给出所有的具体原型类所需的接口。
- 3、具体原型角色
被复制的对象,此角色需要实现抽象的原型角色所要求的接口。
登记形式的原始模型模式
- 1、 客户端角色
提出创建对象的请求。
- 2、抽象原型角色
给出所有的具体原型类所需的接口。一般由接口或抽象类实现。
- 3、具体原型角色
被复制的对象,需要实现抽象的原型角色所需要的接口。
- 4、原型管理器角色
创建具体原型类的对象,并记录每一个被创建的对象。