C++ 设计模式之工厂模式怎么实现
时间: 2023-10-16 20:26:39 浏览: 47
工厂模式是一种常见的创建型设计模式,用于创建对象,而不是通过直接调用构造函数来创建它们。工厂模式定义了一个接口,用于创建相关对象,但是让子类决定要实例化的类。在C++中,工厂模式可以通过以下步骤实现:
1. 创建一个抽象基类,该类定义了一个纯虚拟函数,该函数将返回一个指向基类的指针。这个基类就是我们的工厂接口。
```c++
class Product {
public:
virtual ~Product() {}
virtual void operation() = 0;
};
```
2. 创建具体的产品类,它们继承自抽象基类,并实现了其纯虚拟函数。这些类就是我们的具体产品。
```c++
class ConcreteProductA : public Product {
public:
void operation() override { /* 具体产品 A 的操作 */ }
};
class ConcreteProductB : public Product {
public:
void operation() override { /* 具体产品 B 的操作 */ }
};
```
3. 创建一个工厂类,该类实现了工厂接口,并根据需要创建具体的产品。这个工厂类就是我们的具体工厂。
```c++
class Factory {
public:
virtual ~Factory() {}
virtual std::unique_ptr<Product> createProduct() = 0;
};
class ConcreteFactoryA : public Factory {
public:
std::unique_ptr<Product> createProduct() override {
return std::make_unique<ConcreteProductA>();
}
};
class ConcreteFactoryB : public Factory {
public:
std::unique_ptr<Product> createProduct() override {
return std::make_unique<ConcreteProductB>();
}
};
```
4. 在客户端代码中使用具体工厂创建具体产品。
```c++
int main() {
std::unique_ptr<Factory> factory = std::make_unique<ConcreteFactoryA>();
std::unique_ptr<Product> product = factory->createProduct();
product->operation();
return 0;
}
```
这就是工厂模式的基本实现方式。通过这种方式,我们可以将对象的创建过程与客户端代码分离,从而更好地实现模块化和可扩展性。