策略模式
定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户.
Context: 环境类。维护一个Strategy对象的引用,用一个ConcreteStrategy来配置。
Strategy: 抽象策略类。定义所有支持算法的公共接口。Context使用这个接口来调用某个Concretestrategy定义的算法。
ConcreteStrategy: 具体策略类。封装了具体的算法实现。
public abstract class Strategy {
abstract void algorithm();
}
public class ConcreteStrategyA extends Strategy{
public void algorithm() {
}
}
public class ConcreteStrategyB extends Strategy{
public void algorithm() {
}
}
public class Context {
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
public void algorithm(){
strategy.algorithm();
}
public Strategy getStrategy() {
return strategy;
}
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
}