如何用C++工厂模式创建对象

avatar
作者
猴君
阅读量:0

在C++中,工厂模式是一种设计模式,用于根据输入参数的不同创建不同类型的对象。这样可以将对象的创建过程与使用过程分离,提高代码的可扩展性和可维护性。

下面是一个使用C++工厂模式创建对象的示例:

  1. 首先,定义一个基类(Product)和一些派生类(ConcreteProductA, ConcreteProductB):
#include<iostream> #include<string>  // 基类 class Product { public:     virtual void use() = 0; };  // 派生类A class ConcreteProductA : public Product { public:     void use() override {         std::cout << "Using ConcreteProductA"<< std::endl;     } };  // 派生类B class ConcreteProductB : public Product { public:     void use() override {         std::cout << "Using ConcreteProductB"<< std::endl;     } }; 
  1. 接下来,定义一个工厂类(Factory),用于根据输入参数创建不同类型的对象:
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;         }     } }; 
  1. 最后,在主函数中使用工厂类创建对象并调用其方法:
int main() {     // 创建对象     Product* productA = Factory::createProduct("A");     Product* productB = Factory::createProduct("B");      // 使用对象     productA->use();     productB->use();      // 释放内存     delete productA;     delete productB;      return 0; } 

运行上述代码,将会输出:

Using ConcreteProductA Using ConcreteProductB 

这样,我们就成功地使用C++工厂模式创建了不同类型的对象。当需要添加新的产品类型时,只需创建新的派生类并在工厂类中添加相应的创建逻辑即可。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!