
策略模式简介
当我们因不同的外部条件需要对某个对象执行不同的算法时,我们就可以把具体的算法实现从具体的业务处理中独立出来,把它们实现成为单独的算法类,从而形成一系列的算法,并让这些算法可以相互替换,这就是策略模式。
策略模式的类图

- Strategy:策略接口,定义了Context使用的接口
- ConcreteStrategy:具体的策略实现
- Context:上下文,负责和具体的策略类交互
策略模式的代码示例
Strategy接口:
public interface Strategy {
void algorithmInterface();
}
ConcreteStrategyA:
public class ConcreteStrategyA implements Strategy{
@Override
public void algorithmInterface() {
System.out.println("Strategy A!");
}
}
ConcreteStrategyB:
public class ConcreteStrategyB implements Strategy{
@Override
public void algorithmInterface() {
System.out.println("Strategy B!");
}
}
ConcreteStrategyC:
public class ConcreteStrategyC implements Strategy{
@Override
public void algorithmInterface() {
System.out.println("Strategy C!");
}
}
Context:
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void excute() {
strategy.algorithmInterface();
}
}
Main:
public class Main {
public static void main(String[] args) {
Strategy strategy = new ConcreteStrategyA();
Context context = new Context(strategy);
context.excute();
}
}
预计输出:
Strategy A!
Process finished with exit code 0
策略模式的应用场景
策略模式能够做到动态切换算法,且符合开闭原则,当对某个对象的可以实行一系列平级的算法处理时,就可以考虑策略模式。
参考文献
【1】《研磨设计模式》陈臣等著,清华大学出版社。
每日学习笔记,写于2020-05-13 星期三