打字猴:1.700465663e+09
1700465663
1700465664 Calculator cal=new Calculator();
1700465665
1700465666 System.out.println(“运行结果为:”+a+symbol+b+”=”+cal.exec(a,b,symbol));
1700465667
1700465668 }
1700465669
1700465670 }
1700465671
1700465672 输入3个参数,分别是100+200,运行结果如下所示:
1700465673
1700465674 输入的参数为:[100,+,200]
1700465675
1700465676 运行结果为:100+200=300
1700465677
1700465678 这个方案是非常简单的,能够解决问题,我相信这是大家最容易想到的方案,我们不评论这个方案的优劣,等把四个方案全部讲完了,你自己就会发现孰优孰劣。
1700465679
1700465680 我们再来看第二个方案,Calculator类太嗦了,简化算法如代码清单18-13所示。
1700465681
1700465682 代码清单18-13 简化算法
1700465683
1700465684 public class Calculator{
1700465685
1700465686 //加符号
1700465687
1700465688 private final static String ADD_SYMBOL=”+”;
1700465689
1700465690 //减符号
1700465691
1700465692 private final static String SUB_SYMBOL=”-“;
1700465693
1700465694 public int exec(int a,int b,String symbol){
1700465695
1700465696 return symbol.equals(ADD_SYMBOL)?a+b:a-b;
1700465697
1700465698 }
1700465699
1700465700 }
1700465701
1700465702 这也非常简单,就是一个三目运算符,确实简化了很多。有缺陷先别管,我们主要讲设计,你在实际项目应用中要处理该程序中的缺陷。
1700465703
1700465704 该方案的场景类与方案一相同,如代码清单18-12所示,运行结果也相同,不再赘述。
1700465705
1700465706 我们再来思考第三个方案,本章介绍策略模式,那把策略模式应用到该需求是不是很合适啊?是的,非常合适!加减法就是一个具体的策略,非常简单,省略类图,直接看源码,我们先来看抽象策略,定义每个策略必须实现的方法,如代码清单18-14所示。
1700465707
1700465708 代码清单18-14 引入策略模式
1700465709
1700465710 interface Calculator{
1700465711
1700465712 public int exec(int a,int b);
[ 上一页 ]  [ :1.700465663e+09 ]  [ 下一页 ]