码迷,mamicode.com
首页 > 其他好文 > 详细

【创建型】原型模式

时间:2016-05-18 21:47:47      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

    原型模式主要是用原型实例指定创建原型对象的种类,并且通过拷贝原型创建新对象。最简单的理解就是克隆。就如cocos2d-x中的 class Clonable::clone();该模式的主要目的是可以在运行时,随时创建出某个对象的副本,并且副本具有与本体一样的状态信息。类图参考如下:

技术分享

    模式的编码结构参考如下:

技术分享
 1 namespace propotype
 2 {
 3     /**************************************************************************
 4      * create   : (jacc.kim) [5-18-2016]
 5      * summary  : 
 6     **************************************************************************/
 7     class IClonable
 8     {
 9     public:
10         virtual IClonable* clone() = 0;
11     };//class IClonable
12 
13     class ConcreteClass : public IClonable
14     {
15     public:
16         // some code here........
17         virtual IClonable* clone() override;
18 
19     private:
20         // some member data here........
21         int         m_nTheIntData;  // this is a test member data.
22     };//class ConcreteClass
23 
24 }//namespace propotype
模式编码结构参考

 

    该模式的优点非常明显,可以在任何需要的时候,轻松轻松地克隆出一份当前目标的副本出来,并且最最重要的是现场状态会保持。另外,对于Client来说,同样是解除了与具体对象子类的直接依赖关系。

    有优点,同样也有缺点。它的缺点也是很明显的,即为了同步现场状态,有时候clone()行为会比较复杂,实现比较繁琐。尤其在如c++这样的语言中,必需要要注意对象间的深、浅拷贝问题,一不小心就可能出现问题。

【创建型】原型模式

标签:

原文地址:http://www.cnblogs.com/tongy0/p/5503126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!