C++工厂方法模式

  1. 1 简介: 工厂方法模式是一种创建型设计模式,用于通过一个公共接口来创建具体对象,而无需在客户端代码中显式指定其具体类。它将对象的实例化委托给工厂类,由工厂类根据客户端的请求创建相应的对象。

  2. 2 实现步骤: 以下是使用C++实现工厂方法模式的步骤:

    a. 定义产品接口:首先,定义一个产品接口,该接口声明了产品类的公共方法。

    class Product {
    public:
        virtual void operation() = 0;
    };
    

    b. 实现具体产品类:创建实现产品接口的具体产品类。

    class ConcreteProductA : public Product {
    public:
        void operation() override {
            // 具体产品A的操作
        }
    };
    
    class ConcreteProductB : public Product {
    public:
        void operation() override {
            // 具体产品B的操作
        }
    };
    

    c. 定义工厂接口:创建一个工厂接口,声明用于创建产品的工厂方法。

    class Factory {
    public:
        virtual Product* createProduct() = 0;
    };
    

    d. 实现具体工厂类:创建具体工厂类来实现工厂接口,根据客户端的请求创建相应的产品。

    class ConcreteFactoryA : public Factory {
    public:
        Product* createProduct() override {
            return new ConcreteProductA();
        }
    };
    
    class ConcreteFactoryB : public Factory {
    public:
        Product* createProduct() override {
            return new ConcreteProductB();
        }
    };
    

    3 示例代码: 以下是一个使用工厂方法模式的示例代码:

    #include <iostream>
    
    int main() {
        // 使用具体工厂A创建产品A
        Factory* factoryA = new ConcreteFactoryA();
        Product* productA = factoryA->createProduct();
        productA->operation();
    
        // 使用具体工厂B创建产品B
        Factory* factoryB = new ConcreteFactoryB();
        Product* productB = factoryB->createProduct();
        productB->operation();
    
        delete factoryA;
        delete factoryB;
        delete productA;
        delete productB;
    
        return 0;
    }
    

  3. 上述代码中,客户端使用不同的具体工厂来创建不同的产品,并调用产品的操作方法。

  4. 4 优点:

    • 将对象的创建与使用分离,降低耦合性。
    • 客户端代码无需知道具体产品类,只需要关心产品接口。
    • 可以灵活扩展新的产品和工厂,符合开闭原则。
  5. 5 注意事项:

    • 工厂方法模式适用于创建复杂对象或对象构建过程需要进行某些额外处理的场景。
    • 使用工厂方法模式时,需确保每个具体产品都对应一个具体工厂。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值