设计模式之——简单工厂模式

在C++语言中,简单工厂模式可以通过以下方式来实现:

首先,定义一个产品的基类或接口,所有具体产品类都应该实现这个基类或接口。

果需要更改加法算法,只需要更改 Add 类就可以。如果要增加其他运算,比如平方根、正弦、自然对数等,只要增加相应的运算子类和修改运算类工厂(在 switch 中增加分支)即可

复制代码
#include<iostream>
using namespace std;


enum ClassType
{
    ClassA,
    ClassB,
    ClassC,
    ClassD,
};
class Base
{
public: 
    virtual void whomi() = 0;
};

class A:public Base
{
public:
 // 具体产品A的操作实现
    void whomi()
    {
        cout << " A" << endl;
    }
};

class B:public Base
{
public:
 // 具体产品B的操作实现
    void whomi()
    {
        cout << " B" << endl;
    }
};
class C:public Base
{
public:
    void whomi()
    {
        cout << " C" << endl;
    }
};
class D:public Base
{
public:
    void whomi()
    {
        cout << " D" << endl;
    }
};
//工厂的体现
Base *create_class(const ClassType& type)
{
    switch(type)
    {
        case ClassA:
            return new A();
        case ClassB:
            return new B();
        case ClassC:
            return new C();
        case ClassD:
            return new D();
        default:
            return NULL;
    }
}
int main()
{
    Base *base=create_class(ClassB);
    base->whomi();
    delete base;
    return 0;
}
相关推荐
Kita~Ikuyo20 分钟前
基础数学:图论与信息论
python·算法·llm·图论
烟锁池塘柳033 分钟前
【数学建模】(智能优化算法)粒子群优化算法(PSO)详解与Python实现
算法·数学建模
快乐老干妈44 分钟前
STL-list链表
c++·链表·list
长沙红胖子Qt1 小时前
GStreamer开发笔记(二):GStreamer在ubnutn平台部署安装,测试gstreamer/cheese/ffmpeg/fmplayer打摄像头延迟
c++·开源·产品
西岭千秋雪_1 小时前
Sentinel核心算法解析の滑动窗口算法
分布式·算法·spring cloud·微服务·中间件·sentinel
Qiu的博客1 小时前
一文读懂 AI
人工智能·算法·开源
大鹏dapeng1 小时前
使用gone v2 的 Provider 机制升级改造 goner/xorm 的过程记录
后端·设计模式·go
快乐源泉1 小时前
【设计模式】参数校验逻辑复杂,代码长?用责任链
后端·设计模式·go
Murphy_lx1 小时前
排序(1)
数据结构·算法·排序算法
菜树人1 小时前
c/c++ 使用libgeotiff读取全球高程数据ETOPO
c语言·c++