美文网首页c++库设计模式设计模式 BY C++
【C++ 设计模式】1-1.简单工厂模式

【C++ 设计模式】1-1.简单工厂模式

作者: JeremyYv | 来源:发表于2019-10-12 23:28 被阅读0次
    • 简单工厂模式:一种创建型设计模式


    • 应用场景:
      通过一个对象(工厂),创建很多其他对象(产品)。

    • 实现方式:
      所有产品类都继承自同一抽象类,工厂生产产品时,需要告知要制作的产品类型,通过对类型的判断,创建不同的产品。

    • 优点
      实现(产品)对象的创建与使用分离。

    • 缺点
      增加产品类型时,需要修改工厂类的代码。


    以下是简单工厂模式的简易代码实现
    // SimpleFactory.hpp
    #include <iostream>
    using namespace std;
    
    // 枚举定义产品类型
    typedef enum ProductType {
        DESK,
        CHAIR,
    } PROTYPE;
    
    // 产品抽象类
    class Product {
    public:
        virtual void Show() = 0; // 用于验证产品信息
    };
    
    class WoodDesk: public Product {
    public: 
        void Show() {
            cout << "WoodDesk" << endl;
        }
    };
    
    class WoodChair : public Product {
    public:
        void Show() {
            cout << "WoodChair" << endl;
        }
    };
    
    // 工厂类
    class Factory {
    public:
        Product* CreateProduct(PROTYPE type) {
            switch (type) {
            case Desk:
                return new WoodDesk();
            case Chair:
                return new WoodChair();
            default:
                break;
            }
            return NULL;
        }
    };
    
    主函数中的使用
    // main.c
    #include "SimpleFactory.hpp"
    
    int main()
    {
        // 创建工厂
        Factory* MyFactory = new Factory();
    
        // 传入产品类型创建产品
        Product* DeskWood = MyFactory->CreateProduct(Desk);
        DeskWood->Show();
        Product* ChairWood = MyFactory->CreateProduct(Chair);
        ChairWood->Show();
     
        if (NULL != MyFactory) {
            delete MyFactory;
            MyFactory = NULL;
        }
        return 0;
    }
    
    控制台输出结果
    WoodDesk
    WoodChair
    

    相关文章

      网友评论

        本文标题:【C++ 设计模式】1-1.简单工厂模式

        本文链接:https://www.haomeiwen.com/subject/zhpcmctx.html