打字猴:1.70048225e+09
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 }
1700482279
1700482280 类似的代码解释过很多遍了,不再多说,它就是一个登记容器,所有的具体策略都在这里登记,然后提供给工厂方法模式。策略工厂如代码清单35-8所示。
1700482281
1700482282 代码清单35-8 策略工厂
1700482283
1700482284 public class StrategyFactory{
1700482285
1700482286 //策略工厂
1700482287
1700482288 public static IDeduction getDeduction(StrategyMan strategy){
1700482289
1700482290 IDeduction deduction=null;
1700482291
1700482292 try{
1700482293
1700482294 deduction=(IDeduction)Class.forName(strategy.getValue()).newInstance();
1700482295
1700482296 }catch(Exception e){
1700482297
1700482298 //异常处理
1700482299
[ 上一页 ]  [ :1.70048225e+09 ]  [ 下一页 ]