c++工厂模式 产品带参数
时间: 2024-11-16 19:12:32 浏览: 6
C++工厂模式源码及文档说明
C++中的工厂模式是一种创建型设计模式,它通过将对象的实例化过程从客户端代码中分离出来,提供了一种更统一的方式来创建复杂对象。当需要创建的对象有多种类型,而且每种类型的创建规则又有所不同,这时就可以使用工厂模式。其中,如果产品带参数,通常会涉及到工厂方法(Factory Method)这个子模式。
工厂方法模式定义了一个用于创建对象的接口,让子类决定实例化哪一个具体类。这样做的好处是可以动态地改变产品的种类,而不需要修改客户端代码。例如,在C++中,你可以定义一个抽象工厂类,然后为每个具体的参数类型提供一个具体的工厂类,它们负责生成对应参数的产品实例。
举个简单的例子:
```cpp
// 抽象工厂类
class ProductFactory {
public:
virtual Product* createProduct(int param) = 0;
};
// 具体工厂类,如带参数A的产品
class AProductFactory : public ProductFactory {
public:
Product* createProduct(int param) override {
return new AProduct(param);
}
};
// 具体工厂类,如带参数B的产品
class BProductFactory : public ProductFactory {
public:
Product* createProduct(int param) override {
return new BProduct(param);
}
};
// 消费者类
class Consumer {
private:
ProductFactory* factory;
public:
Consumer(ProductFactory* factory) : factory(factory) {}
void useProduct() {
Product* product = factory->createProduct(someParameter); // 使用工厂创建产品
// 使用product...
}
};
```
在这个例子中,`Consumer`通过传入适当的`ProductFactory`实例来创建并使用具体的产品,而不需要关心产品的具体实现细节。
阅读全文