Riordon

  博客园 :: 首页 :: 新随笔 :: :: :: 管理 ::

Prototype模式

引言: 当客户端需要重复打印大量相同或者相似的内容时(如打印机打印多份试卷),是否要在客户端写上相同的多份代码呢?显然不是了...

Prototype模式(原型模式):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

实例:

CIPrototype接口类

View Code
1 class CIPrototype  
2 {
3 public:
4     CIPrototype();
5     virtual ~CIPrototype();
6     virtual  CIPrototype* Clone() = 0;
7 };

CConcreatePrototype具体类

View Code
1 class CConcreateProtype : public CIPrototype  
2 {
3 public:
4     CConcreateProtype();
5     CConcreateProtype(const CConcreateProtype &rObj);
6     virtual ~CConcreateProtype();
7 
8     virtual  CIPrototype* Clone();
9 };
View Code
 1 CConcreateProtype::CConcreateProtype()
 2 {
 3 
 4 }
 5 
 6 CConcreateProtype::~CConcreateProtype()
 7 {
 8 
 9 }
10 
11 CConcreateProtype::CConcreateProtype(const CConcreateProtype &rObj)
12 {
13     cout<<"相关信息复制完成!"<<endl;
14 }
15 
16 CIPrototype* CConcreateProtype::Clone()
17 {
18     return new (CConcreateProtype)(*this);
19 }

客户端

View Code
 1 int main(int argc, char* argv[])
 2 {
 3     CIPrototype *pPrototype1 = new CConcreateProtype;
 4     CIPrototype *pPrototype2 = pPrototype1->Clone();
 5 
 6     delete pPrototype1;
 7     delete pPrototype2;
 8 
 9     return 0;
10 }

小结:原型模式其实是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节,如果不需要深复制时,其实可以直接使用引用,更高效。

 

 

 

posted on 2013-04-22 21:36  Riordon  阅读(124)  评论(0)    收藏  举报