【C++ 设计模式】1-1.简单工厂模式

190 阅读1分钟
  • 简单工厂模式:一种创建型设计模式


  • 应用场景: 通过一个对象(工厂),创建很多其他对象(产品)。

  • 实现方式: 所有产品类都继承自同一抽象类,工厂生产产品时,需要告知要制作的产品类型,通过对类型的判断,创建不同的产品。

  • 优点 实现(产品)对象的创建与使用分离。

  • 缺点 增加产品类型时,需要修改工厂类的代码。


以下是简单工厂模式的简易代码实现
// SimpleFactory.hpp
#include <iostream>
using namespace std;

// 枚举定义产品类型
typedef enum ProductType {
    DESK,
    CHAIR,
} PROTYPE;

// 产品抽象类
class Product {
public:
    virtual void Show() = 0; // 用于验证产品信息
};

class WoodDesk: public Product {
public:	
    void Show() {
        cout << "WoodDesk" << endl;
    }
};

class WoodChair : public Product {
public:
    void Show() {
        cout << "WoodChair" << endl;
    }
};

// 工厂类
class Factory {
public:
    Product* CreateProduct(PROTYPE type) {
        switch (type) {
        case Desk:
            return new WoodDesk();
        case Chair:
            return new WoodChair();
        default:
            break;
        }
        return NULL;
    }
};
主函数中的使用
// main.c
#include "SimpleFactory.hpp"

int main()
{
    // 创建工厂
    Factory* MyFactory = new Factory();

    // 传入产品类型创建产品
    Product* DeskWood = MyFactory->CreateProduct(Desk);
    DeskWood->Show();
    Product* ChairWood = MyFactory->CreateProduct(Chair);
    ChairWood->Show();
 
    if (NULL != MyFactory) {
        delete MyFactory;
        MyFactory = NULL;
    }
    return 0;
}
控制台输出结果
WoodDesk
WoodChair