工厂方法模式

工厂方法模式就是一个工厂只负责一种产品的生产,当增加新的产品时,不用修改现有工厂类,但需增加新的工厂类与新的产品相对应。

 

#include <iostream>
using namespace std;

//产品基类
class Product
{
public:    
    virtual void create() = 0;
    virtual ~Product(){}   
};

//产品A
class ProductA : public Product
{
public:
    void create(){ cout << "A create()" << endl;}
};

//产品B
class ProductB : public Product
{
public:
    void create(){ cout << "B create()" << endl;}
};

//工厂基类
class Factory
{
public:
    virtual Product* createProduct() = 0;
    virtual ~Factory(){}
};

//工厂A
class FactoryA :public Factory
{
public:
    Product* createProduct()
    {
        return new ProductA();
    }
};


//工厂B
class FactoryB : public Factory
{
public:
    Product* createProduct()
    {
        return new ProductB();
    }
};

int main()
{
    Factory* fa = new FactoryA();
    Factory* fb = new FactoryB();
    Product* pa = fa->createProduct();
    Product* pb = fb->createProduct();
    pa->create();
    pb->create();
    delete pa;
    pa = nullptr;
    delete pb;
    pb = nullptr;
    delete fa;
    fa = nullptr;
    delete fb;
    fb = nullptr;  
}

 

posted @ 2016-09-08 14:22  gaoyanglao  阅读(129)  评论(0)    收藏  举报