打字猴:1.700465689e+09
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);
1700465713
1700465714 }
1700465715
1700465716 抽象策略定义了一个唯一的方法来执行运算。至于具体执行的是加法还是减法,运算时由上下文角色决定。我们再来看两个具体的策略,如代码清单18-15所示。
1700465717
1700465718 代码清单18-15 具体策略
1700465719
1700465720 public class Add implements Calculator{
1700465721
1700465722 //加法运算
1700465723
1700465724 public int exec(int a,int b){
1700465725
1700465726 return a+b;
1700465727
1700465728 }
1700465729
1700465730 }
1700465731
1700465732 public class Sub implements Calculator{
1700465733
1700465734 //减法运算
1700465735
1700465736 public int exec(int a,int b){
1700465737
1700465738 return a-b;
[ 上一页 ]  [ :1.700465689e+09 ]  [ 下一页 ]