技术开发 频道

实战迷你版“一卡通”交易系统

  典型,太典型的策略上下文角色。扣款模块的策略已经定义完毕了,然后我们需要想办法解决策略模式的缺陷:它把所有的策略类都暴露出去,这不行,暴露得越多以后的修改风险也就越大(这是不是类似于女人的衣服:暴露得越多,被男同胞意淫的可能性就越大呢),怎么修改呢?增加一个映射配置文件,实现策略类的隐藏,我们使用枚举担当此任,对策略类进行映射处理,避免高层模块直接访问策略类,同时由工厂方法模式根据映射产生策略对象,解决得很优秀,类图如图35-3所示。

图35-3 策略工厂类图

  又是一个简单得不能再简单的模式——工厂方法模式,通过StrategyMan负责对具体策略的映射,我们看它的代码,如代码清单35-7所示。

  代码清单35-7 策略枚举

public enum StrategyMan {
    
    SteadyDeduction(
"com.cbf4life.common.SteadyDeduction"),
    FreeDeduction(
"com.cbf4life.common.FreeDeduction");
    
    String value
= "";
    
private StrategyMan(String _value){
        
this.value = _value;
    }
    
    
public String getValue(){
        
return this.value;
    }
}
0
相关文章