工厂方法模式--5种创建型模式之一

核心思想:

  把 工厂 和 产品 都给抽象出来  -> 抽象工厂、 抽象产品。

  每一个 具体产品 对应一个  具体工厂, 具体工厂  可生产一种  具体产品。

  可以实现工厂的多态(一个抽象工厂指针可以指向多个种类的工厂)

   可以实现产品的多态(一个抽象产品指针可以指向多个种类的产品)

  符合开闭原则。当添加新的具体产品时,要添加新的具体工厂,不用改变已有的代码。

# include <iostream>

using namespace std;

//抽象产品
class AbsProduct {
public:
        //展示产品
        virtual void show() = 0;
};

//抽象工厂
class AbsFatory {
public:
        //生产产品
        virtual AbsProduct *createProduct() = 0;
};

//具体产品1
class Product1 : public AbsProduct {
public:
        //展示产品
        virtual void show() {
                cout << "具体产品1" << endl;
        }
};

//具体工厂1
class Fatory1 : public AbsFatory {
public:
        //生产产品
        virtual AbsProduct *createProduct() {
                return new Product1;
        }
};

int main()
{
        //实例化具体工厂
        AbsFatory *fatory = new Fatory1;
        //多态成产产品
        AbsProduct *product = fatory->createProduct();
        //多态展示产品
        product->show();

        return 0;
}
     

  

posted @ 2017-09-05 16:28  宁静淡泊  阅读(125)  评论(0编辑  收藏  举报