打字猴:1.700482229e+09
1700482229 //构造函数传递策略
1700482230
1700482231 public DeductionContext(IDeduction_deduction){
1700482232
1700482233 this.deduction=_deduction;
1700482234
1700482235 }
1700482236
1700482237 //执行扣款
1700482238
1700482239 public boolean exec(Card card,Trade trade){
1700482240
1700482241 return this.deduction.exec(card,trade);
1700482242
1700482243 }
1700482244
1700482245 }
1700482246
1700482247 典型的策略上下文角色。扣款模块的策略已经定义完毕了,然后需要想办法解决策略模式的缺陷:它把所有的策略类都暴露出去,暴露得越多以后的修改风险也就越大。怎么修改呢?增加一个映射配置文件,实现策略类的隐藏。我们使用枚举担当此任,对策略类进行映射处理,避免高层模块直接访问策略类,同时由工厂方法模式根据映射产生策略对象,类图如图35-3所示。
1700482248
1700482249
1700482250
1700482251
1700482252 图35-3 策略工厂类图
1700482253
1700482254 又是一个简单得不能再简单的模式——工厂方法模式,通过StrategyMan负责对具体策略的映射,如代码清单35-7所示。
1700482255
1700482256 代码清单35-7 策略枚举
1700482257
1700482258 public enum StrategyMan{
1700482259
1700482260 SteadyDeduction(“com.cbf4life.common.SteadyDeduction”),
1700482261
1700482262 FreeDeduction(“com.cbf4life.common.FreeDeduction”);
1700482263
1700482264 String value=””;
1700482265
1700482266 private StrategyMan(String_value){
1700482267
1700482268 this.value=_value;
1700482269
1700482270 }
1700482271
1700482272 public String getValue(){
1700482273
1700482274 return this.value;
1700482275
1700482276 }
1700482277
1700482278 }
[ 上一页 ]  [ :1.700482229e+09 ]  [ 下一页 ]