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

  • 相关阅读:
    hdu 1018
    hdu 1005
    hdu 1222
    hdu 1297
    hdu 1568
    WCF入门, 到创建一个简单的WCF应用程序
    BarTender 通过ZPL命令操作打印机打印条码, 操作RFID标签
    WCF入门的了解准备工作
    C# Bartender模板打印 条码,二维码, 文字, 及操作RFID标签等。
    Qt configure脚本说明
  • 原文地址:https://www.cnblogs.com/mywolrd/p/1930689.html
Copyright © 2011-2022 走看看