Prototype模式——设计模式学习
来源:互联网 发布:伤心太平洋知乎 编辑:程序博客网 时间:2024/05/22 15:43
Prototype
一 意图
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
二 动机
在图形编辑器中增加音符编辑构造乐谱编辑器的例子中。
GraphicTool作为图形编辑器的框架,其中提供了可以添加的图形;
Graphic作为图形类的基类,新增加的音乐相关符号也都从Graphic派生。
要实现乐谱构造器,需要新增加图形,供GraphicTool添加使用。
如果仅仅是增加新的Graphic派生类,并且再对每一个Graphic实现copy自己。我想了很久也不知道怎么去实现……
增加了新的Graphic派生类,但是GraphicTool仍然是不知道增加了新的图形,要么扩展GraphicTooL支持的图形种类,
要么增加GraphicTooL派生类扩展。不管什么样的做法,我觉得都需要知道我们新增加了Graphic。
所以我觉得使用Prototype模式在这里来实现图形扩展,而不改变客户端GraphicTool等代码,来支持新的特性,似乎有些不妥当。
Prototype模式——原型模式本身就要求先有原型然后才有Clone。
当然我觉得这里每一个Graphic类增加Clone是十分必要的。在图形编辑器中,GraphicTool所支持的可以添加的每一类图形,
都是可以批量添加的,如果每添加或者copy一个图形都需要new一次然后初始化,对于复杂的对象,使用new是非常麻烦的事。
只需要为每一类图形保留一个原型,然后Clone Copy就可以了。
三 适用性与结构
- 当一个系统应该独立于产品创建,构成和表示时,要使用Prototype模式;
- 当要实例化的类是在运行时刻指定时,例如:通过动态加载
- 为了避免创建一个与产品类层次平行的工厂类层次时
- 当一个类的实例只能有几个不同的状态组合中的一种时,建立相应数目的原型
并Clone他们,而不用去手工创建和初始化。
四 代码实现
1 基本形式
2 使用原型管理器
五 总结
Prototype模式在工作的平台使用较少。
Prototype模式例子的实现中,都是只针对浅拷贝,如果具有对象的循环应用或者动态内存成员,那情况可能变得更加的复杂一些。
- Prototype模式——设计模式学习
- Prototype模式——设计模式学习
- 设计模式学习(四) —— Prototype
- 设计模式学习--Prototype
- 设计模式学习笔记——Prototype原型模式
- 设计模式学习笔记(十一)—Prototype原型模式
- 23种设计模式学习—Prototype模式
- java设计模式学习—原型模式(Prototype)
- 设计模式7—Prototype设计模式
- 设计模式——原型模式(Prototype)
- C++设计模式——Prototype模式
- JAVA设计模式 — 原型模式(Prototype)
- 设计模式学习笔记(四)——Prototype原型
- 设计模式学习笔记——原型(Prototype)框架
- 设计模式学习5 Prototype
- 设计模式学习-Prototype(原型)
- 设计模式学习(创建型模式)—原型模式(ProtoType)
- 设计模式学习----Prototype原型模式
- PyOpenGL 资料汇总
- DOM绑定事件 -for循环'
- Singleton模式——设计模式学习
- 在ArcMap中如何将离高程点最近距离的数字赋给高程点
- CCF CSP 编程题目和解答-----试题名称:火车购票-------201609-2
- Prototype模式——设计模式学习
- SPOJ1811 后缀自动机入门
- Qt串口模块基本功能使用
- 51NOD1238
- Prototype模式——设计模式学习
- 我命由我 不由这片天
- 使用canvas绘制几何图形
- 状态栏设为透明色和隐藏状态栏
- Factory Method模式