定义
定义一系列算法,并将这些算法封装起来,并让他们能够相互替换,也称为政策模式(Policy)。
结构图
角色与理解
- 策略模式共分为三种角色:
-
- Context(上下文环境):持有抽象策略类,调用策略方法。
- Strategy(抽象策略类):声明策略方法。
- Concrete Strategy(具体策略类):实现策略方法。
- Context持有State的引用,完成对ConcreteStrategy中策略方法的调用。
核心代码
抽象策略类
public interface Strategy {
void doSomething();
}
真实策略类
public class ConcreteStrategyA implements Strategy {
@Override
public void doSomething() {
System.out.println("AAA");
}
}
public class ConcreteStrategyB implements Strategy {
@Override
public void doSomething() {
System.out.println("BBB");
}
}
客户端
public class Client {
public static void main(String[] args) {
Strategy strategy = new ConcreteStrategyA();
strategy.doSomething();
strategy = new ConcreteStrategyB();
strategy.doSomething();
}
}