【C++ 设计模式】1-1.简单工厂模式
2019-10-12 本文已影响0人
JeremyYv
-
简单工厂模式:一种创建型设计模式
-
应用场景:
通过一个对象(工厂),创建很多其他对象(产品)。 -
实现方式:
所有产品类都继承自同一抽象类,工厂生产产品时,需要告知要制作的产品类型,通过对类型的判断,创建不同的产品。 -
优点
实现(产品)对象的创建与使用分离。 -
缺点
增加产品类型时,需要修改工厂类的代码。
以下是简单工厂模式的简易代码实现
// 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