简单工厂通过封装对象创建过程提升代码灵活性,示例中定义了Product基类及ConcreteProductA、ConcreteProductB两个实现类,SimpleFactory类根据字符参数创建对应产品实例,客户端通过工厂静态方法获取对象并调用use方法,输出“Using Product A”和“Using Product B”,该模式集中管理对象创建,适用于产品稳定的简单系统。

工厂模式用于将对象的创建过程封装起来,使代码更灵活、易于扩展。简单工厂方法不是设计模式中的“正式”模式,但它是理解工厂思想的良好起点。下面通过一个简单的C++示例说明如何实现简单工厂方法。
定义产品接口
首先定义一个基类(或接口),表示所有具体产品共有的行为:
class Product {
public:
virtual ~Product() = default;
virtual void use() const = 0;
};
class ConcreteProductA : public Product {
public:
void use() const override {
std::cout
}
};
class ConcreteProductB : public Product {
public:
void use() const override {
std::cout
}
};
实现简单工厂类
简单工厂根据输入参数决定创建哪种产品对象:
class SimpleFactory {
public:
static Product* createProduct(char type) {
switch (type) {
case 'A': return new ConcreteProductA();
case 'B': return new ConcreteProductB();
default: return nullptr;
}
}
};
使用示例
客户端通过工厂创建对象,无需知道具体类名:
立即学习“C++免费学习笔记(深入)”;
int main() {
Product* product1 = SimpleFactory::createProduct('A');
Product* product2 = SimpleFactory::createProduct('B');
if (product1) {
product1->use();
delete product1;
}
if (product2) {
product2->use();
delete product2;
}
return 0;
}
输出结果:
Using Product A
Using Product B
简单工厂把对象创建集中在一个地方,客户端无需关心实例化细节。虽然它不完全符合开闭原则(新增产品需修改工厂代码),但在产品种类稳定的小型系统中非常实用。基本上就这些。










