1 简单工厂模式
1.1 问题
用任意一种面向对象语言实现一个计算器控制程序,要求输入两个数和运算符号,得到结果。
1.2 知识点
- 命名要规范,有意义
- 可维护性、可复用性、可扩展性
- 避免重复代码,重复代码用函数或宏等
- 计算和显示分开
- 模块划分要合理
- 保证修改无关性(修改一个方面就不造成另一方面的损失)
1.3 简单工厂模式
1.3.1 说明
简单工厂模式由一个工厂对象决定创建出哪一种产品的实例。简单工厂模式是工厂式家庭中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
1.3.2 UML
1.3.3 代码
#ifndef OPERATOR_H_ #define OPERATOR_H_ //基类 class Operator { public: double m_numberA; double m_numberB; virtual double GetResult() { double result=0; return result; } }; //加法类 class OperatorAdd:public Operator { virtual double GetResult() { return m_numberA+m_numberB; } }; //减法类 class OperatorSub:public Operator { virtual double GetResult() { return m_numberA-m_numberB; } }; //乘法类 class OperatorMul:public Operator { virtual double GetResult() { return m_numberA*m_numberB; } }; //除法类 class OperatorDiv:public Operator { virtual double GetResult() { if(m_numberB==0) { return 0; } return m_numberA/m_numberB; } }; //工厂类 class OperatorFactory { public: static Operator *CreateOpreator(char operatorChar) { Operator *oper=0; switch(operatorChar) { case '+': oper=new OperatorAdd(); break; case '-': oper=new OperatorSub(); break; case '*': oper=new OperatorMul(); break; case '/': oper=new OperatorDiv(); break; } return oper; } }; #endif