• 【创建型】Prototype模式


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

  • 相关阅读:
    IOS开发笔记 (3)objective c 自己编写测试示例
    IOS开发笔记(六)对iOS多视图开发的初步了解
    (一) MySQL的初步接触!
    Java MD5加密
    JavaSrcipt报错时,说对象不支持此方法,XXX is not a function的情况
    ibatis有关模糊查询和And与Or联查的例子
    (二) 插入数据Insert
    JavaScript的学习(一)
    朋友,请不要焦虑 [转][收藏]
    20080410
  • 原文地址:https://www.cnblogs.com/tongy0/p/5503126.html
Copyright © 2020-2023  润新知