标签:
/**
*
* @author zhiyong wang
* 简单工厂模式:
* 例子:计算器
* 题目:请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。
*
*/
UML类图
结构图:
Operation是抽象类,父类:
package cn.edu.xidian.sse.simplefactory; /** * * @author zhiyong wang * 构建父类,操作类,定义字段与属性,(字段是私有的,属性时共有的) * 编写用于多态的公共方法 */ public abstract class Operation{ private double numberA; private double numberB; public double getNumberA(){ return this.numberA; } public void setNumberA(double numberA){ this.numberA = numberA; } public double getNumberB(){ return this.numberB; } public void setNumberB(double numberB){ this.numberB = numberB; } public double getResult(){ double result = 0.0; return result; } } |
OperationAdd,OperationSub,OperationMul,OperationDiv分别是实现类
举例子OperationDiv
package cn.edu.xidian.sse.simplefactory; /** * * @author zhiyong wang * 继承了父类的除子类实现类, * 实现了继承,多态的方法,同时将操作封装到具体的类中 * */ public class OperationDiv extends Operation{ public double getResutl(){ double result = 0.0; if(getNumberB() != 0) result = getNumberA() / getNumberB(); return result; } } |
?
ClietnOperate是客户端出发类
package cn.edu.xidian.sse.simplefactory; /** * * * @author zhiyong wang * 简单工厂模式: * 例子:计算器 * 题目:请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。 * * * 客户端操作类,通过工厂创建出一个实际的实现类来执行具体的操作 , * 如果只是切换四种操作,之用更改客户端就可以 * 如果要增加一种操作,就要在新建这种操作的实现类,并在工厂中加以生产 * */ public class ClientOperate { public double operate(String operate, double numberA, double numberB){ Operation oper = OperationFactory.createOperation(operate); oper.setNumberA(numberA); oper.setNumberB(numberB); return oper.getResult(); } public static void main(String[] args) { ClientOperate co = new ClientOperate(); co.operate("+", 1.2, 2.9); } } |
详细代码请参考我的git:https://github.com/wzyxidian/DesignModel
标签:
原文地址:http://www.cnblogs.com/wzyxidian/p/5055776.html