zoukankan      html  css  js  c++  java
  • Item 29. Virtual Constructors and Prototype&Item 30. Factory Method

    Item 29. Virtual Constructors and Prototype

    Virtual Constructors?
    C++没有Virtual Constructors这个概念。但有的情况下又需要这个功能,即在多态的时候能够创建出一个跟指针的动态类型相同的一个对象。既然是多态就要考虑虚函数,在虚函数中调用构造函数不就行了么?是的,这就是设计模式中的Prototype的解决方案:一个clone()的虚成员函数。
    class Meal {
       public:
         virtual ~Meal();
         virtual void eat() = 0;
         virtual Meal *clone() const = 0;
         //...
    };

    class Spaghetti : public Meal {
       public:
         Spaghetti( const Spaghetti & ); // copy ctor
         void eat();
         Spaghetti *clone() const
             { return new Spaghetti( *this ); } // call copy ctor
         //...
    };

    const Meal *m = new Spaghetti;
    Meal *myMeal = m->clone();


    Item 30. Factory Method
    哦,《设计模式》一书的更详细。

  • 相关阅读:
    Java 网络编程的一些概念
    Java多线程之线程池
    Java多线程之线程协作
    Java多线程之线程同步
    Java 线程的基本使用
    线程的概念
    在Java中使用RabbitMQ
    Java Web
    Java 集合
    RabbitMQ的下载、安装
  • 原文地址:https://www.cnblogs.com/aiwz/p/6333222.html
Copyright © 2011-2022 走看看