设计模式总结 - Prototype模式

设计模式总结 - Prototype模式

ID:40200771

大小:33.16 KB

页数:4页

时间:2019-07-25

设计模式总结 - Prototype模式_第1页
设计模式总结 - Prototype模式_第2页
设计模式总结 - Prototype模式_第3页
设计模式总结 - Prototype模式_第4页
资源描述:

《设计模式总结 - Prototype模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、注:文档内容基本上来自于网上,并加上自己的理解而成。有的觉得网友总结得非常好,就完全照搬下来,供学习之用。然而,有的摘抄并没有加上原链接和出处,请谅解。Prototype模式(原型模式)关于Prototype模式,Wikipedia上如是说:原型模式是创建型模式的一种,其特点在于通过「复制」一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的「原型」,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只

2、是命名不一样的同类数据;或者当一个类实例只能几个不同状态组合中的一种时(比如图像处理中算法参数问题,当需要Clone一张图,并且进一步进行操作时,这种模式尤其有用)要点:1.实质2.应用场景:  数字图像处理当中需要Copy一张图的参数实例时  消息实例的Copy时3.JAVA和C++中如何实现  JAVA:Clone和序列化机制  C++:  Clone函数意图:用原型指定创建对象的种类,并且通过拷贝函数用这些原型创建对象。适用:当要实例化的类是在运行时刻指定时,例如:通过动态装载为了避免创建一个与产品类

3、层次平行的工厂类层次时当一个类的实例只能有几个不同状态组合中的一种时,建立相应数目的原型并克隆可能要更方便些。UML图:解析:Prototype类似车辆的展示,当你喜欢某款车时,他们会给你一款相同款式的车,像软件中的复制,而不是车展的那辆。//test.h////////////////////////////////////////////////////////////////////////////虚基类,提供基本函数class Prototype{public:    Prototype(){}  

4、  virtual ~Prototype(){}    virtual Prototype* Clone() = 0;};//派生出来的类,实现具体的Clone函数class ConCreatePrototype1 : public Prototype{public:    ConCreatePrototype1();    ConCreatePrototype1(const ConCreatePrototype1&); //拷贝构造函数,通过这个函数实现类的复制    ~ConCreatePrototyp

5、e1();        virtual Prototype* Clone(); //复制出相同对象的接口};// test.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include "stdlib.h"#include "test.h"using namespace std;///////////////////////////////////////

6、///////////////////////////////////ConCreatePrototype1::ConCreatePrototype1(){    cout << "construction of ConCreatePrototype1";}ConCreatePrototype1::~ConCreatePrototype1(){    cout << "destruction of ConCreatePrototype1";}ConCreatePrototype1::ConCreat

7、ePrototype1(const ConCreatePrototype1&){    cout << "copy a same object as ConCreatePrototype1";}Prototype* ConCreatePrototype1::Clone(){    return new ConCreatePrototype1(*this);}//////////////////////////////////////////////////////////////////////////

8、int main(int argc, char* argv[]){    Prototype* pPrototype = new ConCreatePrototype1;    Prototype* pPrototype2 = pPrototype->Clone();    delete pPrototype;    delete pPrototype2;        system("pause");    r

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。