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();

  • 相关阅读:
    npm安装Vue及配置
    Node.js安装
    代码优化总结
    Java 读取文件指定行数的数据
    Navicat Premium 15 v15.0.17 数据库开发工具 安装激活详解
    发现了一个关于 gin 1.3.0 框架的 bug
    802.1X 账号密码+设备信息双重认证
    Vue项目入门(一)
    WPF登录界面
    使用“user32.dll”控制窗体
  • 原文地址:https://www.cnblogs.com/mywolrd/p/1930689.html
Copyright © 2011-2022 走看看