从Java的角度看,使用原型模式有个明显的特点,就是实现cloneable的clone()方法。
原型模式,能快速克隆出一个与之前存在的对象类似的另外一个我们想要的新对象。
意图
用原型实例指定创建对象的种类,通过拷贝这些原型创建新的对象。
结构图和代码
结构图非常简单,以Intent为例:
如果需要创建的原型数目不固定,可以创建一个原型管理器,在复制原型对象之前,客户端先在原型管理器中查看是否存在满足条件的原型对象。如果有,则直接使用,如果没有,克隆一个。这种称作登记形式的原型模式。
适用原型模式可以对客户端隐藏产品的具体类,因此减少了客户知道的数字的数目,此外是客户无需改变原型模式的缺陷是每个原型的子类都必须实现Cloneable接口,这个实现起来有时候比较困难。
效果
(1)创建型模式
(2)运行时刻增加和删除产品
(3)改变只以指定新对象
(4)改变结构以指定新对象
(5)减少子类的构造