1700465574
1700465575
❑需要屏蔽算法规则的场景。
1700465576
1700465577
现在的科技发展得很快,人脑的记忆是有限的(就目前来说是有限的),太多的算法你只要知道一个名字就可以了,传递相关的数字进来,反馈一个运算结果,万事大吉。
1700465578
1700465579
1700465580
1700465581
1700465582
设计模式之禅 18.3.4 策略模式的注意事项
1700465583
1700465584
如果系统中的一个策略家族的具体策略数量超过4个,则需要考虑使用混合模式,解决策略类膨胀和对外暴露的问题,否则日后的系统维护就会成为一个烫手山芋,谁都不想接。
1700465585
1700465586
1700465587
1700465588
1700465590
设计模式之禅 18.4 策略模式的扩展
1700465591
1700465592
先给出一道小学的题目:输入3个参数,进行加减法运算,参数中两个是int型的,剩下的一个参数是String型的,只有“+”、“-”两个符号可以选择,不要考虑什么复杂的校验,我们做的是白箱测试,输入的就是标准的int类型和合规的String类型,各位大侠,想想看,怎么做,简单得很!
1700465593
1700465594
有非常多的实现方式,我今天来说四种。先说第一种,写一个类,然后进行加减法运算,类图也不用画了,太简单了,如代码清单18-11所示。
1700465595
1700465596
代码清单18-11 最直接的加减法
1700465597
1700465598
public class Calculator{
1700465599
1700465600
//加符号
1700465601
1700465602
private final static String ADD_SYMBOL=”+”;
1700465603
1700465604
//减符号
1700465605
1700465606
private final static String SUB_SYMBOL=”-“;
1700465607
1700465608
public int exec(int a,int b,String symbol){
1700465609
1700465610
int result=0;
1700465611
1700465612
if(symbol.equals(ADD_SYMBOL)){
1700465613
1700465614
result=this.add(a,b);
1700465615
1700465616
}else if(symbol.equals(SUB_SYMBOL)){
1700465617
1700465618
result=this.sub(a,b);
1700465619
1700465620
}
1700465621
1700465622
return result;
1700465623
[
上一页 ]
[ :1.700465574e+09 ]
[
下一页 ]