CplusPlus 工厂模式
时间: 2023-10-29 21:07:19 浏览: 34
C++ 工厂模式是一种创建对象的设计模式,它将对象的创建过程与具体的客户端代码分离开来,从而提高代码的灵活性和可维护性。
工厂模式的核心思想是定义一个工厂接口,由该接口的具体实现类负责创建不同类型的对象。客户端通过该工厂接口来获取所需的对象,而不需要直接与具体的对象类进行交互。
下面是一个简单的 C++ 工厂模式的示例代码:
```c++
// 抽象产品类
class Product {
public:
virtual void operation() = 0;
};
// 具体产品类 A
class ProductA : public Product {
public:
void operation() override {
cout << "Product A operation." << endl;
}
};
// 具体产品类 B
class ProductB : public Product {
public:
void operation() override {
cout << "Product B operation." << endl;
}
};
// 工厂接口
class Factory {
public:
virtual Product* createProduct() = 0;
};
// 具体工厂类 A
class FactoryA : public Factory {
public:
Product* createProduct() override {
return new ProductA();
}
};
// 具体工厂类 B
class FactoryB : public Factory {
public:
Product* createProduct() override {
return new ProductB();
}
};
// 客户端代码
int main() {
// 创建工厂对象
Factory* factoryA = new FactoryA();
Factory* factoryB = new FactoryB();
// 获取产品对象
Product* productA = factoryA->createProduct();
Product* productB = factoryB->createProduct();
// 调用产品方法
productA->operation();
productB->operation();
// 释放资源
delete productA;
delete productB;
delete factoryA;
delete factoryB;
return 0;
}
```
在上面的代码中,抽象产品类 `Product` 定义了产品的操作方法,在具体产品类 `ProductA` 和 `ProductB` 中分别实现了该操作方法。工厂接口 `Factory` 定义了创建产品的方法 `createProduct()`,具体工厂类 `FactoryA` 和 `FactoryB` 分别实现了该方法来创建不同类型的产品。客户端代码通过工厂接口来获取所需的产品对象,并调用其操作方法。
通过使用工厂模式,我们将对象的创建过程与具体的客户端代码分离开来,从而提高了代码的灵活性和可维护性。如果需要添加新的产品类型,只需要创建一个新的具体产品类和对应的具体工厂类即可,而不需要修改客户端代码。