• 【C++设计模式之简单工厂模式】分析及示例


    简介

    简单工厂模式是一种常见的设计模式,用于创建多种相似对象的实例,属于创建型。
    它通过一个工厂类来解耦客户端代码和对象的创建过程,使得客户端无需直接和具体的产品类交互,而只需要通过工厂类获取所需的产品实例即可。

    原理

    简单工厂模式的核心思想是将对象的创建过程封装在一个工厂类中,客户端只需要提供所需的参数,就能从工厂类中获取对应的实例,从而达到对象创建的目的。
    在简单工厂模式中,所有的产品类都是由同一个工厂类来创建的,因此可以对整个系统进行集中管理和控制。

    示例

    下面是一个简单工厂模式的C++示例:

    #include 
    using namespace std;
    
    // 抽象产品类
    class Product {
    public:
        virtual void use() = 0;
    };
    
    // 具体产品类A
    class ProductA : public Product {
    public:
        void use() override {
            cout << "Product A is used." << endl;
        }
    };
    
    // 具体产品类B
    class ProductB : public Product {
    public:
        void use() override {
            cout << "Product B is used." << endl;
        }
    };
    
    // 工厂类
    class Factory {
    public:
    	// 此处可用枚举定义
        static Product* createProduct(int type) {
            if (type == 1) {
                return new ProductA();
            } else if (type == 2) {
                return new ProductB();
            } else {
                return nullptr;
            }
        }
    };
    
    int main() {
        Product* product1 = Factory::createProduct(1);
        Product* product2 = Factory::createProduct(2);
    
        if (product1 != nullptr) {
            product1->use();
        }
    
        if (product2 != nullptr) {
            product2->use();
        }
    
        delete product1;
        delete product2;
    
        return 0;
    }
    
    • 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
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    解释

    在上面的示例中,抽象产品类Product定义了产品的基本接口,具体产品类ProductA和ProductB继承自Product,并实现了use方法。

    工厂类Factory中,定义了一个静态方法createProduct,根据传入的参数类型来创建对应的产品实例。使用时,只需要通过Factory::createProduct方法传入参数,就能获取到所需的产品实例。这样就实现了客户端代码和对象创建过程的解耦。

    优缺点

    简单工厂模式的优点是实现了对象的创建与使用的分离,简化了客户端代码的复杂度,并且集中管理了对象的创建过程,方便修改和扩展。但它也有一些缺点,例如工厂类会变得很庞大,难以维护。同时,由于工厂类需要根据参数类型来创建对象,所以添加新的产品类时,需要修改工厂类的代码,不符合开闭原则。

    结论

    总结起来,简单工厂模式适用于创建多种相似对象的场景,能够很好地解耦客户端代码和对象创建过程。但在实际应用中,需要权衡其优点和缺点,根据具体场景选择合适的设计模式

  • 相关阅读:
    二叉排序树的插入(递归、非递归)和构造
    【毕业设计源码】基于java的足球联赛管理系统的设计与实现
    详解设计模式:抽象工厂模式
    【Leetcode】 51. N 皇后
    视觉享受,兼顾人文观感和几何特征的字体「GitHub 热点速览 v.22.46」
    Android13源码添加系统服务
    OpenSSL加解密算法使用方法
    MySQL基本操作之记录增删改查
    无人机共轴动力系统测试研究
    从Matlab实例学习遗传算法
  • 原文地址:https://blog.csdn.net/MrHHHHHH/article/details/133563360