设计模式(4)-对象创建型模式-Prototype模式

来源:互联网 发布:销售报表数据分析 编辑:程序博客网 时间:2024/06/10 08:53

原文:http://blog.csdn.net/davidwang9527/article/details/24013061


1.对象创建型模式

1.4          Protoype模式

1.4.1需求

                通过拷贝原形对象创建新的对象。

1.4.2结构


•P r o t o t y p e(Gr a p h i c)

— 声明一个克隆自身的接口。

•C o n c r e t e P r o t o t y p e(S t a ff、W h o l e N o t e、H a l fN o t e)

— 实现一个克隆自身的操作。

•  C l i e n t(G r a p h i c To o l)

— 让一个原型克隆自身从而创建一个新的对象。

1.4.3例子-C++             

//Prototype.h #ifndef _PROTOTYPE_H_ #define _PROTOTYPE_H_class Prototype { public:                 virtual ~Prototype();                 virtual Prototype*Clone()const = 0; protected:                 Prototype(); private: };class ConcretePrototype:public Prototype { public:                 ConcretePrototype();                 ConcretePrototype(const  ConcretePrototype& cp);                 ~ConcretePrototype();                 Prototype* Clone() const; protected: private: };#endif //~_PROTOTYPE_H_ 代码片断2:Prototype.cpp//Prototype.cpp#include"Prototype.h" #include<iostream> using namespace std; Prototype::Prototype() { }Prototype::~Prototype() { }Prototype* Prototype::Clone() const {                 return 0;} ConcretePrototype::ConcretePrototype() { }ConcretePrototype::~ConcretePrototype() { }ConcretePrototype::ConcretePrototype(const  ConcretePrototype& cp) {                 cout<<"ConcretePrototype copy..."<<endl;}Prototype* ConcretePrototype::Clone() const {                 return newConcretePrototype(*this); }//main.cpp #include"Prototype.h" #include<iostream> using namespace std;int main(int argc,char*argv[]){                 Prototype* p= newConcretePrototype();                 Prototype* p1=p->Clone();                 return 0;}
注:这里只是说明概念,没有涉及C++常见的深度拷贝问题.


0 0
原创粉丝点击