策略(Strategy)模式将不同的算法策略封装为不同对象,从客户端程序中分离出来而独立变化。
策略模式包含三部分:
- Strategy 定义所有算法的公共接口
- ConcreteStrategy 某种具体算法的实现
- Context 客户端程序,持有一个ConcreteStrategy实例
Strategy
interface Strategy {
void operate();
}
ConcreteStrategy
class ConcreteStrategyA implements Strategy {
@Override
public void operate() {
//A operation
}
}
class ConcreteStrategyB implements Strategy {
@Override
public void operate() {
//B operation
}
}
Context
class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
void operate() {
strategy.operate();
}
}