设计模式-创建模式-简单工厂模式

2020-04-28  本文已影响0人  阿棍儿_Leon

简单工厂模式是对若干种对象的创建过程进行了集中管理。
这种模式一般用工厂生产产品来理解。使用时,用户首先创建或获取工厂对象,然后调用工程对象的创建方法去生产产品。
以下代码对产品分类,Products是产品基类,ProductAProductB是具体产品类。

#include <iostream>

using namespace std;

enum ProductType{
    ProductTypeA,
    ProductTypeB,
};

class Products
{
public:
    virtual void Display() = 0;
    virtual ~Products(){}
};

class ProductA:public Products
{
public:
    void Display()
    {
        cout<<__PRETTY_FUNCTION__<<endl;
    }
};

class ProductB:public Products
{
public:
    void Display()
    {
        cout<<__PRETTY_FUNCTION__<<endl;
    }
};

以下代码定义工厂类

class Factory
{
public:
    Products* CreateProduct(ProductType Type)
    {
        switch (Type) {
        case ProductTypeA:
            return new ProductA();
            break;
        case ProductTypeB:
            return new ProductB();
            break;
        default:
            return nullptr;
            break;
        }
    }
};

以下代码用工厂类对象分别生产两类产品对象并使用(调用Display

int main(void){
    Factory* factory = new Factory();
    Products* productA = factory->CreateProduct(ProductTypeA);
    productA->Display();
    Products* productB = factory->CreateProduct(ProductTypeB);
    productB->Display();
    delete factory;
    delete productA;
    delete productB;
    return 0;
}

输出

virtual void ProductA::Display()
virtual void ProductB::Display()
上一篇 下一篇

猜你喜欢

热点阅读