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

在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;
}
相关推荐
不会就选b6 小时前
算法日常・每日刷题--<贪心>25
数据结构·算法
蒸蒸yyyyzwd6 小时前
秋招学习笔记 day46
c++·八股
千里码aicood9 小时前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类
码匠许师傅9 小时前
【C++三方组件】cpp-httplib:一个头文件起 HTTP 服务
开发语言·c++·http
做cv的小昊10 小时前
【World Model】π0.5:a Vision-Language-Action Model with Open-World Generalization
人工智能·算法·机器学习·大模型·多模态·vla·世界模型
لا معنى له10 小时前
World-In-World: World Models in a Closed-Loop World
算法
无名猿10 小时前
new/delete 与 malloc/free:为什么绝对不能混用
c++·内存管理·现代c++·踩坑记录
长按助力退休11 小时前
设计模式实战,这 5 个最常用
设计模式
2601_9622186112 小时前
C++中decltype关键字的实现
开发语言·c++