如何用C++实现工厂模式

avatar
作者
筋斗云
阅读量:0

工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

以下是一个使用 C++ 实现工厂模式的示例:

  1. 首先,定义一个接口(Product):
// Product.h #pragma once #include<iostream>  class Product { public:     virtual void use() = 0; }; 
  1. 然后,为该接口创建几个具体的实现(ConcreteProduct):
// ConcreteProductA.h #pragma once #include "Product.h"  class ConcreteProductA : public Product { public:     void use() override {         std::cout << "Using ConcreteProductA"<< std::endl;     } };  // ConcreteProductB.h #pragma once #include "Product.h"  class ConcreteProductB : public Product { public:     void use() override {         std::cout << "Using ConcreteProductB"<< std::endl;     } }; 
  1. 创建一个工厂类(Factory),该类根据输入参数创建具体的产品对象:
// Factory.h #pragma once #include "Product.h"  class Factory { public:     static Product* createProduct(const std::string& type) {         if (type == "A") {             return new ConcreteProductA();         } else if (type == "B") {             return new ConcreteProductB();         }         return nullptr;     } }; 
  1. 最后,在客户端代码中使用工厂类创建所需的产品对象:
// main.cpp #include "Factory.h" #include "ConcreteProductA.h" #include "ConcreteProductB.h"  int main() {     Product* productA = Factory::createProduct("A");     Product* productB = Factory::createProduct("B");      productA->use();     productB->use();      delete productA;     delete productB;      return 0; } 

这个示例展示了如何使用工厂模式创建不同类型的产品对象,而无需客户端知道具体的创建细节。当需要添加新的产品类型时,只需创建一个新的具体产品类并更新工厂类即可。

广告一刻

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