定義
策略模式定義了一系列算法除抛,并將每個算法封裝起來丧失,使他們可以相互替換叛买,且算法的變化不會影響到使用算法的客戶砂代。需要設計一個接口,為一系列實現(xiàn)類提供統(tǒng)一的方法率挣,多個實現(xiàn)類實現(xiàn)該接口刻伊,設計一個抽象類(可有可無,屬于輔助類,視實際需求是否添加)捶箱,提供輔助函數(shù)智什。
角色
- Context: 環(huán)境類
- Strategy: 抽象策略類
- ConcreteStrategy: 具體策略類
實例
定義抽象策略角色
public abstract class Strategy {
public abstract void show();
}
定義具體策略角色
public class StrategyA extends Strategy {
@Override
public void show() {
System.out.println("use strategy A...");
}
}
public class StrategyB extends Strategy {
@Override
public void show() {
System.out.println("use strategy B...");
}
}
public class StrategyC extends Strategy {
@Override
public void show() {
System.out.println("use strategy C...");
}
}
定義環(huán)境角色
public class Context {
private Strategy strategy;
public Context(String str) {
switch (str){
case "A":
strategy = new StrategyA();
break;
case "B":
strategy = new StrategyB();
break;
case "C":
strategy = new StrategyC();
break;
}
}
public void chooseStrategy(){
strategy.show();
}
}
測試
public class Test {
public static void main(String[] args) {
Context context = new Context("A");
context.chooseStrategy();
}
}
輸出結果
use strategy A...