结构图

模式说明
类设计
模式说明
- 扩展点在每一个具体的Strategy实现类。
- 一个Context上下文持有一个具体Strategy实现类的引用。
- 客户端可以替换Strategy的实现类,不改变算法的变化。
- 定义一系列的算法,把它们一个个封装起来,并使它们可以相互替换,该模式使得算法可独立于使用它的客户而变化。
public static void main(String[] args) {
Context context;
// 由于实例化不同的策略,所以最终调用context.contextInterface()
// 时,所获得的结果就不相同
context = new Context(new ConcreteStrategyA());
context.contextInterface();
// use B algorithm
context = new Context(new ConcreteStrategyB());
context.contextInterface();
// use C algorithm
context = new Context(new ConcreteStrategyC());
context.contextInterface();
}
类设计
public interface Strategy {
public void algorithmInterface();
}
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void contextInterface() {
strategy.algorithmInterface();
}
}
public class ConcreteStrategyA implements Strategy {
@Override
public void algorithmInterface() {
System.out.println("algorithm A");
}
}
public class ConcreteStrategyB implements Strategy {
@Override
public void algorithmInterface() {
System.out.println("algorithm B");
}
}
public class ConcreteStrategyC implements Strategy {
@Override
public void algorithmInterface() {
System.out.println("algorithm C");
}
}