简介
策略模式(Strategy Pattern)属于行为型设计模式。将每一个算法封装到具有共同接口的独立类中,根据需要来绑定策略,使得具体实现和策略解耦。
当你想使用对象中各种不同的算法变体,使用if...else 所带来的复杂和难以维护,可使用策略模式。或者当有许多相同类,它们仅在执行某些行为时略有不同,可使用策略模式。
作用
- 策略算法可以自由切换,保持策略与执行类的松耦合。
- 避免使用多重条件判断,不同环境角色可以组装多个策略。
- 扩展性良好,可以随时增删策略行为。
- 体现了多用组合,少用继承。
实现步骤
- 建立一个策略接口。
- 新建多个策略行为类,实现该策略接口。
- 建立一个抽象环境角色类,并将策略接口组合进来。是否需要抽象类可选。
- 建立多个环境角色类来继承该抽象类。
- 可以动态改变环境角色的策略行为。
UML
Java代码
状态基础接口
// Strategy.java 基础策略接口
public interface Strategy {
public void run();
}
策略实现类
// StrategyA.java 策略A
public class StrategyA implements Strategy {
&