
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
- 中文名 原型模式
- 外文名 Prototype
- 问题 结构复杂的对象"的创建工作
- 实现 clone()方法来实现对象的克隆
- 模式 Prototype
定义
原型模式是一种创建型设计模式,Prototyp露犯节e模式允许一个对象再创建绝音派乙万久服工另外一个可定制的对象,根本无需知道任何如何创建的细节,工来自作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
解决问题
它主要面对的问题360百科是:"某些结构复杂的对象"的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却客著植呢拥有比较稳定一致的接口。
如何使用
因为来自Java中的提供clone()方法来实现对象的克隆,所以Prototype模式实现一下子变得很简单。
以勺子360百科为例:
调用Pro液资态许很对totype模式很简单:
当然也可以结合工厂模式来创建AbstractSpoon实例。
在J治起斤引很逐ava中Prototype模式变成clone()方法的使用,由于Java的纯洁的面向对象特性,使得在Java中使用设计模式变得很自然,问根吧互职李把友击角创两者已经几乎是浑然一体了。这反映在很多模式上,如Itera某何蛋波战虽放金tor遍历模式。
带Prototype Manager的原型模式:客户(Client)角色:客户端类向原型管理器提出跑原如材径远导角抓容创建对象的请求。
抽象原型(Prototype)角色:这是一个抽象角色省怀具课名宜程地破,通常由一个C#米行接口或抽象类实现。此角色给出所盐毛坏车九临车朝钱室官有的具体原型类所需的接口。在C#中,抽象原型角色通常实现了I同息升Cloneable接口。
具体原型(Concrete Prototype)角色:被复制的对象。此角色需要实现抽象的原型角色所要求的接口。
原型管理器(Prototype 眼Manager)角色:创建具体原型类的对象,并记录每一个被创建的对象。
代码实现如下: