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

在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;
}
相关推荐
惟长堤一痕1 分钟前
LeetCode 高频SQL50题(基础版)day01
算法·leetcode·职场和发展
Liusp11 分钟前
数据结构和算法之树形结构B+树(7)
数据结构·b树·算法
不脱发的牧码人16 分钟前
C#实现傅里叶变换算法
人工智能·算法·机器学习·c#·傅里叶分析
攻城狮7号1 小时前
【5.5】指针算法-三指针解决颜色分类
c++·算法
OKkankan1 小时前
单链表的实现(数据结构)
java·c语言·数据结构·c++
gkdpjj1 小时前
二叉树中的深搜
c++·算法
Lyqfor1 小时前
Redis学习:BitMap/HyperLogLog/GEO案例 、布隆过滤器BloomFilter、缓存预热+缓存雪崩+缓存击穿+缓存穿透
java·数据库·redis·学习·算法·缓存·1024程序员节
passer__jw7671 小时前
【LeetCode】【算法】146. LRU缓存
算法·leetcode
醉颜凉2 小时前
【NOIP普及组】明明的随机数
java·c语言·数据结构·c++·算法
yannan201903132 小时前
【算法】(Python)贪心算法
算法·贪心算法