策略模式
定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶.
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;
}
}