创建型原型模式

Posted jacc.kim

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建型原型模式相关的知识,希望对你有一定的参考价值。

    原型模式主要是用原型实例指定创建原型对象的种类,并且通过拷贝原型创建新对象。最简单的理解就是克隆。就如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++这样的语言中,必需要要注意对象间的深、浅拷贝问题,一不小心就可能出现问题。

以上是关于创建型原型模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式 - 创建型模式_原型模式

设计模式-创建型-原型模式

原型模式(Prototype)-创建型(Creational)设计模式

创建型设计模式之原型模式

扎实基础_设计模式_创建型_原型模式

扎实基础_设计模式_创建型_原型模式