java设计模式学习笔记之计算器中的简单工厂模式
最近在重温设计模式,偶然看到程杰的《大话设计模式》写的非常不错、通俗易懂,之后的一系列都是学习的笔记,仅此记录。
尊重原创,转载请注明出处:原文查看惊喜更多 http://blog.csdn.net/qq137722697
这是一个使用策略模式和构建模式设计的网络请求框架,去看看吧《[倾力之作]android轻量级网络请求框架MyHttputils2.1.6》
一、情景回放:
某校大二软件工程专业班的《Java程序设计》课上,老师给大伙出了一个题目:用java实现一个简单的计算器功能(用户从控制台输入),5分钟不到大部分同学就自信满满地交给了老师,他们的答案大部分是这三种:
二、常见的三种答案
2.1、第一种
用户输入两个需要处理的数,和做什么操作,根据操作符做相应的结果
public static void main(String args[]) {
Scanner scn = new Scanner(System.in);
System.out.print("第一个数:");
int a = scn.nextInt();
System.out.print("操作(+,-,*,/):");
String option = scn.next();
System.out.print("第二个数:");
int b = scn.nextInt();
int result = 0;
if ("+".equals(option)) {
result = a + b;
}
if ("-".equals(option)) {
result = a - b;
}
if ("*".equals(option)) {
result = a * b;
}
if ("/".equals(option)) {
result = a / b;
}
System.out.println("结果:" + result);
}
老师点评:根据程序来看if需要判断4次,完全可以再优化一下
2.2、第二种
于是乎另外一批同学乐了,他们的程序是这样的:
public static void main(String args[]) {
Scanner scn = new Scanner(System.in);
System.out.print("第一个数:");
int a = scn.nextInt();
System.out.print("操作(+,-,*,/):");
String option = scn.next();
System.out.print("第二个数:");
int b = scn.nextInt();
int result = 0;
if ("+".equals(option)) {
result = a + b;
} else if ("-".equals(option)) {
result = a - b;
} else if ("*".equals(option)) {
result = a * b;
} else if ("/".equals(option)) {
result = a / b;
}
System.out.println("结果:" + result);
}
2.3、第三种
等他们刚说完,另外一个同学马上发声说:还可以用switch语句,而且对于除法,如果除数为0是要报错的,应该加上错误处理?(下面是他的代码)
public static void main(String args[]) {
Scanner scn = new