打字猴:1.700465563e+09
1700465563
1700465564
1700465565
1700465566
1700465567 设计模式之禅 18.3.3 策略模式的使用场景
1700465568
1700465569 ❑多个类只有在算法或行为上稍有不同的场景。
1700465570
1700465571 ❑算法需要自由切换的场景。
1700465572
1700465573 例如,算法的选择是由使用者决定的,或者算法始终在进化,特别是一些站在技术前沿的行业,连业务专家都无法给你保证这样的系统规则能够存在多长时间,在这种情况下策略模式是你最好的助手。
1700465574
1700465575 ❑需要屏蔽算法规则的场景。
1700465576
1700465577 现在的科技发展得很快,人脑的记忆是有限的(就目前来说是有限的),太多的算法你只要知道一个名字就可以了,传递相关的数字进来,反馈一个运算结果,万事大吉。
1700465578
1700465579
1700465580
1700465581
1700465582 设计模式之禅 18.3.4 策略模式的注意事项
1700465583
1700465584 如果系统中的一个策略家族的具体策略数量超过4个,则需要考虑使用混合模式,解决策略类膨胀和对外暴露的问题,否则日后的系统维护就会成为一个烫手山芋,谁都不想接。
1700465585
1700465586
1700465587
1700465588
1700465589 设计模式之禅 [:1700453999]
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)){
[ 上一页 ]  [ :1.700465563e+09 ]  [ 下一页 ]