一、基础概念
1、策略模式:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
2、适用场景:策略模式就是用来封装算法的。多个类只区别在表现行为不同,在运行时动态选择具体要执行的行为。需要在不同情况下使用不同的策略,或者策略在未来还有其他方式实现。对客户隐藏具体策略的实现细节,彼此完全独立。
3、UML结构

Context:环境上下文,用一个ConcreteStrategy来配置,维护一个对Strategy对象的引用,客户端调用该类的方法
Strategy:抽象策略类,定义所有支持的算法的公共接口
ConcreteStrategy:具体策略类,封装了具体的算法或行为,继承于Strategy
4、代码描述
抽象策略类:CashSuper.java

具体策略类:NormalCash.java

具体策略类:RebateCash.java

上下文类:CashContext.java

网友评论