C++实现工厂模式
时间: 2023-07-07 08:25:47 浏览: 108
工厂模式是一种常用的设计模式,它可以将对象的创建与使用分离,使得客户端代码不需要知道对象的具体创建过程。在 C++ 中,可以通过抽象工厂类和具体工厂类来实现工厂模式。
下面是一个简单的工厂模式示例代码:
```cpp
#include <iostream>
// 抽象产品类
class Product {
public:
virtual void use() = 0;
};
// 具体产品类 A
class ConcreteProductA : public Product {
public:
void use() override {
std::cout << "I'm a ConcreteProductA." << std::endl;
}
};
// 具体产品类 B
class ConcreteProductB : public Product {
public:
void use() override {
std::cout << "I'm a ConcreteProductB." << std::endl;
}
};
// 抽象工厂类
class Factory {
public:
virtual Product* createProduct() = 0;
};
// 具体工厂类 A
class ConcreteFactoryA : public Factory {
public:
Product* createProduct() override {
return new ConcreteProductA();
}
};
// 具体工厂类 B
class ConcreteFactoryB : public Factory {
public:
Product* createProduct() override {
return new ConcreteProductB();
}
};
int main() {
// 创建工厂 A
Factory* factoryA = new ConcreteFactoryA();
// 创建产品 A
Product* productA = factoryA->createProduct();
// 使用产品 A
productA->use();
// 创建工厂 B
Factory* factoryB = new ConcreteFactoryB();
// 创建产品 B
Product* productB = factoryB->createProduct();
// 使用产品 B
productB->use();
// 释放资源
delete productA;
delete productB;
delete factoryA;
delete factoryB;
return 0;
}
```
在上面的代码中,`Product` 是抽象产品类,`ConcreteProductA` 和 `ConcreteProductB` 是具体产品类。`Factory` 是抽象工厂类,`ConcreteFactoryA` 和 `ConcreteFactoryB` 是具体工厂类。客户端通过具体工厂类来创建具体产品类的实例,从而实现了对象的创建与使用分离。
在实际使用中,可以通过工厂模式来创建一些复杂的对象或者对象的组合,以便更好地管理和维护代码。
阅读全文