zoukankan      html  css  js  c++  java
  • C++:Prototype模式去掉Clone方法

    Prototype模式去掉Clone方法
     
    意图:
    用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
     
    结构图:
     
     
                                       

    Prototype的主要缺陷是每一个Prototype的子类都必须实现Clone操作,这很烦。
    一般都这样实现:
     
    Prototype* ConcretePrototype::Clone()
    {
         return new ConcretePrototype(*this);
    }
     
    现在想去掉这个重复的操作,
    结构图如下:
     
    实现如下:
     

    class PrototypeWrapper
    {
         public:
              ~PrototypeWrapper() {}

              virtual Prototype* clone() = 0;
    };

    template <typename T>
    class PrototypeWrapperImpl : public PrototypeWrapper
    {
         public:
              PrototypeWrapperImpl()
              {
                   _prototype = new T();
              }

              virtual Prototype* clone()
              {
                   return new T(*_prototype);
              }

         private: 
              T* _prototype;
    };
     
    使用:
     

    PrototypeWrapper* prototype = new PrototypeWrapperImpl<ConcretePrototype>();

    Prototype* p = prototype->clone();

  • 相关阅读:
    C#调用WebService实现天气预报
    火狐完整版下载地址
    Unity3D 中 2D_Toolkit插件下载 和 导入方法
    给大家分享个 网站头像上传的 插件
    JQuery工具方法,实例方法
    ireport5.6.0 win10打不开
    JFreeChart 零散
    JS 类继承 原型继承
    技术电子书下载网址
    正则 变量替换
  • 原文地址:https://www.cnblogs.com/mywolrd/p/1930689.html
Copyright © 2011-2022 走看看