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 ]
[
下一页 ]