简介
将算法或策略抽象出来,提供一个统一的接口,客户端通过注入不同的实现对象来达到算法或策略的动态替换。
定义
定义一系列的算法,并将每种算法单独封装起来,而且使它们可以相互替换,让算法独立于使用它的客户而独立变化。
使用场景
- 针对同一类型的问题的多种处理方式,仅仅是具体的行为有差别。
- 需要安全地封装多种同一类型的操作。
Java 代码示例
public interface Strategy {
void calculate();
}
public class AStrategy implements Strategy {
@Override
public void calculate() {
}
}
public class BStrategy implements Strategy {
@Override
public void calculate() {
}
}
public class Calculator {
private Strategy mStrategy;
public void setStrategy(Strategy strategy) {
mStrategy = strategy;
}
public void calculate() {
mStrategy.calculate();
}
}