原型模式(ProtoType)
来源:互联网 发布:手机上javaweb编程软件 编辑:程序博客网 时间:2024/06/06 17:49
目的:由于需求不断变化,我们需要创建的对象经常需要剧烈地变化,与此同时用户并不想跟着发生变化。即对象的设计者需要提供一个相对稳定的接口供用户使用。原型模式主要是通过copy/clone操作来创建新的对象。其核心可以说就是一个copy/clone接口。
结构:
说明:
TheClient : 原型的使用者,让一个原型克隆自身而创建一个新的对象。
ProtoType : 主要用来声明接口。依靠多态实现原型模式。
DeriveProtoType : 我们真正要创建的对象。
代码示例:
现在需要定制一个数字显示器,主要进行数字的显示运算等操作。客户可以选择是用10进制、8进制的方式显示。
class BaseView { //基础原型用于定义接口public: virtual BaseView * clone() { return new BaseView(*this); } virtual void view() { /*do the things*/ }};class DecView : public BaseView{ //十进制显示public: virtual DecView* clone() { return new DecView(*this); } virtual void view() { /*do the things*/ }};class OctView : public BaseView { //八进制显示public: virtual OctView* clone() { return new OctView(*this); } virtual void view() { /*do the things*/ }};class ViewFactory { //显示器工厂public: ViewFactory( BaseView *view) : _view(view) { } virtual BaseView* createView() { return _view->clone(); }private: BaseView* _view;};class TheUser { //用户public: void fun(){ BaseView* view = _factory.createView(); view->view(); }private: ViewFactory & _factory;};
如果客户需要增加十六进制的显示方式,开发人员只需要增加新的class HexView即可。不需要user代码做改动,既方便又迅速。
注:篇幅所限,此例子对代码做了简化,只显示了原型的结构和使用方式。开发过程中需要注意clone函数调用的拷贝构造函数的实现。
原型模式的优点:
1,对用户隐藏了基本的产品类,无需用户改变即可改变产品的表现方式。
2,可以很方便的改变产品。只需要更改对应的factory即可更改产品。
3,采用clone的方式,使我们能够非常灵活的创建具有相同接口的不同对象。
0 0
- 原型模式(Prototype)
- 原型模式(prototype)
- 原型(Prototype)模式
- 原型(ProtoType)模式
- 原型模式(Prototype)
- 原型模式(Prototype)
- Prototype(原型模式)
- 原型(Prototype)模式
- Prototype(原型模式)
- PROTOTYPE(原型)模式
- 原型模式(ProtoType)
- 原型(prototype)模式
- 原型模式(Prototype)
- 原型模式(Prototype)
- 原型模式(Prototype)
- 原型模式(prototype)
- 原型模式(prototype)
- Prototype(原型模式)
- 使用 SqlBulkCopy大批量插入数据到数据库
- sqlldr导入数据(以PostgreSql>>>Oracle为例)copy call to '/tmp/call.csv' DELIMITER ',' NULL '' CSV
- 字符处理 HDU-1004
- fortify——password Management
- js图片旋转
- 原型模式(ProtoType)
- 【LeetCode】17. Letter Combinations of a Phone Number
- html页面的meta标签的name和http-equiva区别
- 梁广轩_1505010601_实验3
- Android--百度API的初使用
- 静态方法和非静态方法的区别是什么
- 投掷硬币(动态规划)
- 176. Second Highest Salary
- VS2013出现“无法找到“xxx.exe”的调试信息,或者调试信息不匹配”错误解决方案