简单工厂模式
来源:互联网 发布:pdf转换ppt软件 编辑:程序博客网 时间:2024/06/09 20:57
看了<<大话设计模式>>, 照着写了一个简单工厂模式的计算器, 慢慢来, 不急.
#include <iostream>#include <stdexcept>using namespace std;class Operation{public:virtual float Operating() = 0;public:float numberleft;float numberright;};class OperationAdd : publicOperation{public:float Operating(){return (numberleft + numberright);}};class OperationSub : public Operation{public:float Operating(){return (numberleft - numberright);}};class OperationMul : public Operation{public:float Operating(){return (numberleft * numberright);}};class OperationDiv : public Operation{public:float Operating(){if (numberright == 0) //抛出异常throw std::out_of_range("参数异常: 除法右值不能为0");return (numberleft / numberright);}};// 运算符工厂class OperationFactory{public:OperationFactory(){op = NULL;}void Operating(float numberleft, char operate, float numberright){switch(operate){case ('+'):op = new OperationAdd;break;case ('-'):op = new OperationSub;break;case ('*'):op = new OperationMul;break;case ('/'):op = new OperationDiv;break;default:throw std::out_of_range("参数异常: 没有输入正确的运算符");break;}op->numberleft = numberleft;op->numberright = numberright;}float GetResult(){return op->Operating();}private:Operation * op;};void Operate(){float numberA;float numberB;char operate;cout << "请输入数字A :";cin >> numberA;cout << "请输入运算符:";cin >> operate;cout << "请输入数字B :";cin >> numberB;OperationFactory *opef = new OperationFactory;opef->Operating(numberA, operate, numberB);cout << "结果是:" << opef->GetResult() << endl;}int main(){//Operate();try{Operate();}catch (exception &e) // 异常要用引用收{cout << e.what() << endl;}catch (...){}system("pause");return 0;}
阅读全文
0 0
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- win7 python2 安装mysql-python
- mysql分区分表
- js实现replaceAll方法与正则中引用变量
- 1029. 旧键盘(20)
- 版本控制-GitIgnore模板
- 简单工厂模式
- 主成分分析PCA
- flat型网络
- MySQL主从复制配置
- 配置Jekins时,由于Jekins上gradle版本较低,而将本地项目的gradle版本由26.0.0变成24.2.0的相关配置
- Spring基础-2-IOC注解
- 移动web顶部导航修订版(续上版)
- LeetCode 39,40,46,47,78,90 回溯法专题
- C++结构体中的位域