c++ 工厂模式客户使用
时间: 2024-11-15 13:14:49 浏览: 7
C++设计模式之工厂模式
工厂模式是一种创建型设计模式,它通过隐藏对象的实例化过程,提供了一种创建对象的统一接口。在 C++ 中,工厂模式通常用于创建复杂的对象,特别是那些需要初始化步骤的对象。客户使用工厂模式时,不需要关心新创建的对象的具体类型,只需通过工厂函数或接口调用来获取。
举个简单的例子:
```cpp
// 定义一个抽象产品接口
class Product {
public:
virtual ~Product() {}
virtual void doSomething() = 0;
};
// 具体的产品类
class ConcreteProductA : public Product {
public:
void doSomething() override {
cout << "Doing something for A" << endl;
}
};
class ConcreteProductB : public Product {
public:
void doSomething() override {
cout << "Doing something for B" << endl;
}
};
// 创建工厂类
class Factory {
public:
static Product* createProduct(int type) {
switch (type) {
case 1:
return new ConcreteProductA();
case 2:
return new ConcreteProductB();
default:
throw std::invalid_argument("Invalid product type");
}
}
};
// 客户端使用工厂
int main() {
Product* product = Factory::createProduct(1);
product->doSomething(); // 输出 "Doing something for A"
delete product;
product = Factory::createProduct(2);
product->doSomething(); // 输出 "Doing something for B"
delete product;
return 0;
}
```
在这个例子中,客户端只需传递一个产品类型给 `Factory` 的 `createProduct` 函数,然后就可以安全地操作返回的 `Product` 指针,无需关心它是 `ConcreteProductA` 还是 `ConcreteProductB`。
阅读全文