模式結構:
Context:環境類
Strategy:抽象策略類
ConcreteStrategy:具體策略類
UML圖:
例子代碼:
環境類:
public class Context {
private Strategy strategy;
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public void algorithm(){
strategy.algorithm();
}
}
public interface Strategy {
void algorithm();
}
具體策略類A:
public class ConcreteAlgorithmA implements Strategy {
@Override
public void algorithm() {
System.out.println("使用策略A");
}
}
具體策略類B:
public class ConcreteAlgorithmB implements Strategy {
@Override
public void algorithm() {
System.out.println("使用策略B");
}
}
客戶類:
public class Client {
public static void main(String[] args) {
//準備決策環境
Context context = new Context();
//實例化使用的策略
Strategy strategy1 = new ConcreteAlgorithmA();
Strategy strategy2 = new ConcreteAlgorithmB();
//環境設置策略
context.setStrategy(strategy1);
context.algorithm();
//根據不同策略輸出不同結果
context.setStrategy(strategy2);
context.algorithm();
}
}
結果打印: