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

  • 相关阅读:
    Java内存管理的小技巧
    Java 数组
    cmd命令大全
    wget 使用技巧
    Excellent Eclipse Plugin
    A Tutorial on Clustering Algorithms
    KMeans 算法
    Windowtester Pro Automation test environment Setup using VM Ware Client by Remote Desktop Connection
    POP3、SMTP、IMAP、Exchange
    LeetCode Validate Binary Search Tree
  • 原文地址:https://www.cnblogs.com/mywolrd/p/1930689.html
Copyright © 2011-2022 走看看