简单工厂模式--女娲造人造啥做啥
来源:互联网 发布:tomcat80端口被占用 编辑:程序博客网 时间:2024/06/09 16:59
有这样一个问题,以面向对象的方法去实现一个简单的计算器该怎么实现呢?
首先,有种很简单的思路,输入两个数,然后判断运算符类型,进行相应运算,最后输出结果。
这样的方法虽然也能完成,但是不符合面向对象的方法,并且如果有一种新加的运算符时,会显得十分
的冗余而不好更改。
那有没有一种更好的方法呢?
这就是简单工厂模式,理解就是女娲造人造啥做啥,工作类有相似的操作功能,并且当新加如
功能类时,不影响以及不需要修改其他的功能类。
先给出类图:
Operation类是一个抽象类,除了有两个成员变量外,还有个需要子类实现的抽象方法getResult();
统一的通过OperationFactory类去获得实例Operation的子类,根据特定的传入命令,要啥获得啥;
这样一来,如果要新加入一种计算功能,从类图上看,只需要添加一个类继承Operation,
并且在OperationFactory中加入相应实例化语句就行,而不需要动其他的类。
下面看详细的代码:
Operation类:
package com.blog.anla.SimpleFactory;public abstract class Operation {protected double numberA;protected double numberB;/** * 得到运算结果 * @return */public abstract double getResult();}
OperationAdd类:
package com.blog.anla.SimpleFactory;public class OperationAdd extends Operation{@Overridepublic double getResult() {return numberA + numberB;}}
package com.blog.anla.SimpleFactory;public class OperationSub extends Operation{@Overridepublic double getResult() {return numberA - numberB;}}
OperationMul类:
package com.blog.anla.SimpleFactory;public class OperationMul extends Operation{@Overridepublic double getResult() {return numberA*numberB;}}
OperationDiv类:
package com.blog.anla.SimpleFactory;public class OperationDiv extends Operation{@Overridepublic double getResult() {if(numberB != 0){return numberA / numberB;}else{return 0;}}}
OperationFactory类:
package com.blog.anla.SimpleFactory;/** * 简单工厂,需要啥类就考虑用一个 * 单独的类来创造示例工程。 * 降低了功能类之间的耦合性,如果要添加一个新功能, * 仅仅需要加相应的类,而不需要更改其他的类 * @author U-ANLA * */public class OperationFactory {public static Operation createOperate(char operate){Operation oper = null;switch (operate) {case '+':oper = new OperationAdd();break;case '-':oper = new OperationSub();break;case '*':oper = new OperationMul();break;case '/':oper = new OperationDiv();break;}return oper;}public static void main(String[] args) {Operation oper = OperationFactory.createOperate('+');oper.numberA = 1;oper.numberB = 2;System.out.println(oper.getResult());}}
赠人玫瑰手留余香,希望对大家有用哈
~( ̄▽ ̄~)~
阅读全文
0 0
- 简单工厂模式--女娲造人造啥做啥
- 女娲与抽象工厂模式
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 神话传说--女娲造人
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- eclipse在debug模式下卡住,start模式下可以启动
- 数据恢复软件哪个好
- 机器学习使用交叉熵作为损失函数的原因
- 路径中 斜杠/和反斜杠\ 的区别
- 2017年最好的JavaScript库
- 简单工厂模式--女娲造人造啥做啥
- Android 带关闭按钮的DialogFragment。
- C++中函数表与函数容器
- 理解MySQL——索引与优化
- 七牛上传图片第一次成功后面不成功
- 初学acmer--读《算法竞赛入门经典》笔记(三)p27-34
- How to fix the problem of executing gitenv.csh file failed
- JavaWeb使用Struts2的简单案例
- 11.6 字符串示例:字符串排序