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

在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;
}
相关推荐
CoovallyAIHub8 分钟前
突破360°跟踪极限!OmniTrack++:全景MOT新范式,HOTA指标狂飙43%
深度学习·算法·计算机视觉
煤球王子15 分钟前
学而时习之:C++中的字符串
c++
得物技术36 分钟前
得物管理类目配置线上化:从业务痛点到技术实现
后端·算法·数据分析
go_bai40 分钟前
Linux--进程池
linux·c++·经验分享·笔记·学习方法
QT 小鲜肉43 分钟前
【QT/C++】Qt网络编程进阶:UDP通信和HTTP请求的基本原理和实际应用(超详细)
c语言·网络·c++·笔记·qt·http·udp
CoovallyAIHub1 小时前
首个大规模、跨模态医学影像编辑数据集,Med-Banana-50K数据集专为医学AI打造(附数据集地址)
深度学习·算法·计算机视觉
熬了夜的程序员1 小时前
【LeetCode】101. 对称二叉树
算法·leetcode·链表·职场和发展·矩阵
却道天凉_好个秋1 小时前
目标检测算法与原理(二):Tensorflow实现迁移学习
算法·目标检测·tensorflow
实心儿儿2 小时前
C++ —— list
开发语言·c++
仟千意2 小时前
C++:c++基础知识
c++