策略模式(Strategy),定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。UML结构图如下:
策略模式要保证每一个策略类实现抽象策略类策略方法,然后将策略类构造中注入上下文实现类中,调用注入策略方法,这样声明不同的策略类调用上下文方法,可以实现不同的策略方法调用
public class Context {
Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
//上下文接口
public void contextInterface() {
strategy.algorithmInterface();
}
}
1 public class ConcreteStrategyA extends Strategy {
2
3 @Override
4 public void algorithmInterface() {
5 System.out.println("算法A实现");
6 }
7
8 }
1 public class Client {
2
3 public static void main(String[] args) {
4 Context context;
5
6 context = new Context(new ConcreteStrategyA());
7 context.contextInterface();
8
9 context = new Context(new ConcreteStrategyB());
10 context.contextInterface();
11
12 context = new Context(new ConcreteStrategyC());
13 context.contextInterface();
14 }
15
16 }