zoukankan      html  css  js  c++  java
  • 【创建型】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++这样的语言中,必需要要注意对象间的深、浅拷贝问题,一不小心就可能出现问题。

  • 相关阅读:
    Vue开发之vue-router的基本使用
    react监听URL的正确方式
    Electron Windows增加托盘悬浮框功能
    vue自定义标签和单页面多路由实现
    如何通过带有Vue插槽的组件传递HTML内容
    Flutter使用JsBridge方式处理Webview与H5通信
    npm实用知识_命令合集
    <keep-alive> 缓存及其缓存优化原理
    深入学习和理解 Redux
    Centos7使用Yum安装高版本的LNMP
  • 原文地址:https://www.cnblogs.com/tongy0/p/5503126.html
Copyright © 2011-2022 走看看