简单工厂模式-计算器控制台程序
2016-01-28 13:35
351 查看
编写一个简单的计算器程序,包含基本运算。要求面向对象语言。
题目看起来很简单,但由于要求使用面向对象语言,所以要将面向对象语言的三大特性全部体现出来才可以,而不是单单实现其功能。
除数为0时
面向对象【可扩展,易复用,易维护】
通过封装,继承,多态降低程序的耦合度
简单工厂模式
即考虑用一个单独的类来做创造实例的过程。
AddOperation 具体的运算子类【expends Operation】
OperationFactory 运算工厂类【创造具体实例】
Application 相应的应用类【进行相应计算】
如此编写的代码在需要扩充功能或者修改代码时就十分方便了,如果需要增加根号类,则只需新增一个具体的运算类RadicalOperation和修改运算工厂类即可。从而使代码实现了面向对象的特性。
2,AddOperation
3,OperationFactory
4,Application
题目看起来很简单,但由于要求使用面向对象语言,所以要将面向对象语言的三大特性全部体现出来才可以,而不是单单实现其功能。
关键点分析
对输入做判断除数为0时
面向对象【可扩展,易复用,易维护】
通过封装,继承,多态降低程序的耦合度
简单工厂模式
即考虑用一个单独的类来做创造实例的过程。
所需的类
Operation 运算类【定义运算所需的参数以及运算方法】AddOperation 具体的运算子类【expends Operation】
OperationFactory 运算工厂类【创造具体实例】
Application 相应的应用类【进行相应计算】
如此编写的代码在需要扩充功能或者修改代码时就十分方便了,如果需要增加根号类,则只需新增一个具体的运算类RadicalOperation和修改运算工厂类即可。从而使代码实现了面向对象的特性。
具体代码
1,Operation[code] public abstract class Operation { public double number_A; public double number_B; public double getNumber_A() { return number_A; } public void setNumber_A(double number_A) { this.number_A = number_A; } public double getNumber_B() { return number_B; } public void setNumber_B(double number_B) { this.number_B = number_B; } public abstract double getResult(); }
2,AddOperation
[code] public class OperationAdd extends Operation{//继承自Operation @Override public double getResult() { // TODO Auto-generated method stub double result = number_A + number_B; return result; } }
3,OperationFactory
[code]/** * 运算工厂类 * @author Administrator * */ public class OperationFactory { public static Operation createOperation(String operation){ Operation ope = null; switch (operation) { case "+": ope = new OperationAdd(); break; case "/": ope = new OperationDiv(); break; default: break; } return ope; } }
4,Application
[code]public class Application { public static void main(String args[]){ Operation ope; ope = OperationFactory.createOperation("/"); ope.number_A = 6; ope.number_B = 3; System.out.println(ope.getResult()+""); } }
相关文章推荐
- 6.3 Controllers -- Managing Dependencies Between Controllers
- Collection
- window下的netstat
- Swift语法_字符和字符串
- Android面试题(1)
- IONIC 竖屏显示(屏幕不旋转)
- PostgreSQL COPY 导入/导出数据
- Log4j2完全讲解 附项目集成源码下载
- php 设计模式_命名空间的巧用
- hackyviewpager有什么用
- Navicat设定mysql定时任务
- 正则表达式
- PyInstaller把.py转为.exe
- Android中通知的使用
- 广播注册和添加权限过滤广播
- Android Studio的基本设置
- 真他妈扯淡的表结构设计
- 旋转卡壳模板
- effective java 读书笔记(五)
- file_get_contents & curl mark一下