用C++实现一个简单的工厂模式
时间: 2024-05-01 14:23:21 浏览: 101
一个工厂模式的例子(C++实现)
5星 · 资源好评率100%
工厂模式是一种创建型设计模式,用于创建对象而无需指定其具体类。它定义了一个接口,该接口用于创建对象,但让子类决定要实例化的类。在本例中,我们将使用C++实现一个简单的工厂模式。
首先,我们需要定义一个抽象基类,该类将由所有具体产品类继承。这个基类将定义一个纯虚函数,该函数将被具体产品类实现。
```c++
class Product {
public:
virtual void use() = 0;
};
```
接下来,我们需要创建具体产品类,这些类将继承自抽象基类并实现其纯虚函数。
```c++
class ConcreteProductA : public Product {
public:
void use() override {
std::cout << "Using ConcreteProductA" << std::endl;
}
};
class ConcreteProductB : public Product {
public:
void use() override {
std::cout << "Using ConcreteProductB" << std::endl;
}
};
```
现在,我们需要创建一个工厂类,该类将根据传递给它的参数创建具体产品类的实例。
```c++
class Factory {
public:
static Product* createProduct(const std::string& type) {
if (type == "A") {
return new ConcreteProductA();
} else if (type == "B") {
return new ConcreteProductB();
} else {
return nullptr;
}
}
};
```
最后,我们可以使用工厂类来创建具体产品对象,而不必直接实例化具体产品类。
```c++
int main() {
Product* productA = Factory::createProduct("A");
productA->use();
delete productA;
Product* productB = Factory::createProduct("B");
productB->use();
delete productB;
return 0;
}
```
在上面的示例中,我们通过调用`Factory::createProduct()`方法来创建具体产品对象,并使用`use()`方法来使用这些对象。注意,在使用完产品对象后,我们需要使用`delete`操作符来释放内存。
这就是一个简单的工厂模式实现,它允许我们在运行时创建具体产品对象而不必直接实例化具体产品类。
阅读全文