介绍
GoF 23种设计模式之一。
定义
定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。
举例
策略接口
public interface IStrategy {
public void doSomething();
}
具体策略1
class ConcreteStrategy1 implements IStrategy {
public void doSomething() {
System.out.println("具体策略1");
}
}
具体策略2
class ConcreteStrategy2 implements IStrategy {
public void doSomething() {
System.out.println("具体策略2");
}
}
上下文对象
class Context {
private IStrategy strategy;
public Context(IStrategy strategy){
this.strategy = strategy;
}
public void execute(){
strategy.doSomething();
}
}
测试
public class Demo {
public static void main(String[] args){
Context context;
System.out.println("-----执行策略1-----");
context = new Context(new ConcreteStrategy1());
context.execute();
System.out.println("-----执行策略2-----");
context = new Context(new ConcreteStrategy2());
context.execute();
}
}
执行结果
适用场景
- 保证算法的保密性和安全性的场景;
- 很多类仅仅在行为上有区别的场景(可以动态选择具体行为)。