定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。
类图

实现
1 2 3 4 5
| public interface Strategy {
public void behavior();
}
|
1 2 3 4 5 6 7 8
| public class ConcreteStrategyA implements Strategy {
@Override public void behavior() { System.out.println("执行算法A..."); }
}
|
1 2 3 4 5 6 7 8
| public class ConcreteStrategyB implements Strategy {
@Override public void behavior() { System.out.println("执行算法B..."); }
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class Context {
private Strategy strategy;
public void setStrategy(Strategy strategy) { this.strategy = strategy; }
public void doSomething() { strategy.behavior(); }
}
|
1 2 3 4 5 6 7 8 9 10 11 12
| public class Client {
public static void main(String[] args) { Context context = new Context(); context.setStrategy(new ConcreteStrategyA()); context.doSomething();
context.setStrategy(new ConcreteStrategyB()); context.doSomething(); }
}
|