标题:C++中的设计模式:工厂模式
简介: 工厂模式是一种常用的设计模式,它提供了一种创建对象的接口,但允许子类决定实例化的类。
正文:
1. 工厂模式的定义
工厂模式包括三个角色:Product(产品)、ConcreteProduct(具体产品)和Factory(工厂)。工厂类负责创建产品的实例,而具体的产品类负责实现产品的具体行为。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
   | class Product { public:     virtual void operation() = 0; };
  class ConcreteProductA : public Product { public:     void operation() override {         std::cout << "Product A\n";     } };
  class ConcreteProductB : public Product { public:     void operation() override {         std::cout << "Product B\n";     } };
  class Factory { public:     virtual Product* createProduct() = 0; };
  class ConcreteFactoryA : public Factory { public:     Product* createProduct() override {         return new ConcreteProductA();     } };
  class ConcreteFactoryB : public Factory { public:     Product* createProduct() override {         return new ConcreteProductB();     } };
 
  | 
2. 具体实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   | int main() {     ConcreteFactoryA factoryA;     ConcreteFactoryB factoryB;
      Product* productA = factoryA.createProduct();     Product* productB = factoryB.createProduct();
      productA->operation();     productB->operation();
      delete productA;     delete productB;
      return 0; }
 
  | 
3. 工厂模式的应用
工厂模式常用于以下场景:
- 当一个类不知道它必须创建的对象的类时。
 - 当一个类希望将对象的创建延迟到其子类时。
 
4. 工厂模式的扩展:抽象工厂模式
抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。
结论:
工厂模式是一种常用的设计模式,它提供了一种创建对象的接口,但允许子类决定实例化的类。在C++中,可以通过定义产品、具体产品和工厂来实现工厂模式。工厂模式常用于需要将对象的创建与具体业务逻辑分离的场景。