C++ 01简单工厂模式
来源:互联网 发布:系统功能开发 java 编辑:程序博客网 时间:2024/06/08 12:49
下文是关于设计一个计算器的思路,本文采用了简单工厂模式设计计算器,定义一个工厂类,通过工厂类中的createOperate函数做逻辑判断,来调用具体的计算器类。直接看结构图,简单明了。
简单工厂模式结构图如下:
代码实现如下:
#include<iostream>#include<string>using namespace std;//抽象运算类class Operation{private:double numberA = 0;double numberB = 0;public:double getNumberA(){return numberA;}void setNumberA(double _numberA){numberA = _numberA;}double getNumberB(){return numberB;}void setNumberB(double _numberB){numberB = _numberB;} virtual double getResult() =0{double result = 0;return result;}};//加法类class OperationAdd :public Operation{public:double getResult(){double result = 0;result = getNumberA() + getNumberB();return result;}};//减法类class OperationSub :public Operation{public:double getResult(){double result = 0;result = getNumberA()-getNumberB();return result;}};//乘法类class OperationMul :public Operation{public:double getResult(){double result = 0;result = getNumberA() * getNumberB();return result;}};//除法类class OperationDiv :public Operation{public:double getResult(){double result = 0;if (this->getNumberB() == 0){cout << "除数不能为0" << endl;return 0;}result = getNumberA() / getNumberB();return result;}};//运算工厂类class OperationFactory{public:static Operation* createOperate(const char operate){Operation * oper = 0;switch (operate){case '+':oper = new OperationAdd();break;case '-':oper = new OperationSub();break;case '*':oper = new OperationMul();break;case '/':oper = new OperationDiv();break;}return oper;}};//客户端代码int main(){Operation *oper = 0;oper = OperationFactory::createOperate('+');oper->setNumberA(1);oper->setNumberB(2);double result = oper->getResult();cout << result << endl;return 0;}简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
如果再扩展其他功能,需要添加具体类来继承抽象操作类,且要修改工厂类,这就违背了开放-封闭原则(修改了原有的类)。
0 0
- C#-简单工厂模式
- 【C#】简单工厂模式
- 【C#】简单工厂模式
- 简单工厂模式(SimpleFactory-C#)
- 简单工厂模式(c++)
- 【C++】Chapter1:简单工厂模式
- Objective C--简单工厂模式
- Objective C 简单工厂模式
- 简单工厂模式(C#)
- Objective C--简单工厂模式
- C#--简单工厂设计模式
- 设计模式 - 简单工厂模式(C++)
- C#--设计模式之简单工厂模式
- 设计模式之简单工厂,工厂方法模式(c++)
- java 工厂模式之简单工厂(01)
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 简单工厂模式C语言实现
- Visual Studio 2015安装心得
- Mac添加环境变量
- 习题3-11 UVa1588 Kickdown
- Android性能优化典范
- CSS进阶3: inline-block 的前世今生
- C++ 01简单工厂模式
- ip
- Android自定义控件:将ViewPager封装自己的TabPager控件
- form-json-url传参
- mac下如何设置开机自动运行指定命令
- php关于使用iconv(...)函数对字符进行中文转换时,遇到的一个问题
- 开始做!
- 如何获取触摸精灵的版本号??
- Python 中利用 matplotlib 进行曲线的部分填充 fill_betweenx