设计模式 | 简单工厂模式

 按理说应该把书全都看完一遍,再开始写博客比较科学,会有比较全面的认识。

但是既然都决定要按规律更新博客了,只能看完一个设计模式写一篇了。
也算是逼自己思考了,不是看完就过,至少得把代码自己都敲一遍。
刚开始可能写的比较浅显,更像是读书笔记,只能未来回来完善了。
废话啰嗦到这,开始正题。

文章是以一个面试中,面试官要求写一个计算器开头的。
巧的是,在之前的一次面试中,刚好面试官也问了这个问题,当时我并不能给出令人满意的答案,只恨没有早点学习设计模式啊。
代码不光是要完成功能就完事了,还要考虑健壮性、复用性、可扩展性等等。
学习设计模式的意义也在于此,帮助我们写出更加优雅的代码。
 
那么回到之前的问题,如果现在要你写一个计算器的程序,你会怎么写呢?
我的第一反应和书中的菜鸟一样,特别还是在面试中,时间紧迫,当然是把功能完成了就OK,为什么要考虑那么复杂,写一个方法直接搞定:
(这里为了代码的简洁性,暂时不考虑用户不按规范输入,除零、浮点失精这种健壮性问题。)
复制代码
 1 package designpattern.staticfactorymethod;  2 import java.util.Scanner;  3 public class Calculator {  4      public static void main(String[] args) {  5            Scanner scanner = new Scanner(System.in);  6            System.out.println("请输入一个数字");  7            double num1 = scanner.nextDouble();  8            System.out.println("请输入一个运算符:+、-、*、/");  9            String operator = scanner.next();// 不能用nextLine(),会把上一个回车给吸收10            System.out.println("请输入一个数字"); 11            double num2 = scanner.nextDouble(); 12            switch (operator) { 13            case "+": 14                 System.out.println(num1 + num2); 15                 break; 16            case "-": 17                 System.out.println(num1 - num2); 18                 break; 19            case "*": 20                 System.out.println(num1 * num2); 21                 break; 22            case "/": 23                 System.out.println(num1 / num2); 24                 break; 25            default: 26                 break; 27            } 28            scanner.close(); 29      } 30 }
复制代码

最多把计算的方法单拉出来:

复制代码
package designpattern.staticfactorymethod; import java.util.Scanner; 

                    
                
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信