打字猴:1.700465834e+09
1700465834 //减法运算
1700465835
1700465836 SUB(”-“){
1700465837
1700465838 public int exec(int a,int b){
1700465839
1700465840 return a-b;
1700465841
1700465842 }
1700465843
1700465844 };
1700465845
1700465846 String value=””;
1700465847
1700465848 //定义成员值类型
1700465849
1700465850 private Calculator(String_value){
1700465851
1700465852 this.value=_value;
1700465853
1700465854 }
1700465855
1700465856 //获得枚举成员的值
1700465857
1700465858 public String getValue(){
1700465859
1700465860 return this.value;
1700465861
1700465862 }
1700465863
1700465864 //声明一个抽象函数
1700465865
1700465866 public abstract int exec(int a,int b);
1700465867
1700465868 }
1700465869
1700465870 先想一想它的名字,为什么叫做策略枚举?枚举没有问题,它就是一个Enum类型,那为什么又叫做策略呢?找找看能不能找到策略的影子在里面?是的,我们定义了一个抽象的方法exec,然后在每个枚举成员中进行了实现,如果不实现会怎么样呢?你试试看看,不实现该方法就不能编译,现在是不是清楚了?把原有定义在抽象策略中的方法移植到枚举中,每个枚举成员就成为一个具体策略。简单吧,总结一下,策略枚举定义如下:
1700465871
1700465872 ❑它是一个枚举。
1700465873
1700465874 ❑它是一个浓缩了的策略模式的枚举。
1700465875
1700465876 当然,读者可能要反思了,我使用内置类也可以实现相同的功能,写一个Context类,然后把抽象策略、具体策略都内置进去,不就可以解决问题了,是的,可以解决,但是扩展性如何?可读性如何?代码是让人读的,然后才是让机器执行,别把顺序搞反了!
1700465877
1700465878 我们继续完善方案四,场景类稍有改动,如代码清单18-19所示。
1700465879
1700465880 代码清单18-19 场景类
1700465881
1700465882 public class Client{
1700465883
[ 上一页 ]  [ :1.700465834e+09 ]  [ 下一页 ]