策略模式(行為型)
阿新 • • 發佈:2020-11-28
設計模式的3個分類:建立型模式、結構型模式、行為型模式
策略模式定義:
策略模式定義了演算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化獨立於使用演算法的客戶。
策略模式圖示:
程式碼實現:
//定義策略介面 public interface Strategy { int operation(int num1, int num2); } public class ConcreteStrategyA implements Strategy{ @Override public int operation(int num1, int num2) { return num1 + num2; } } public class ConcreteStrategyB implements Strategy{ @Override public int operation(int num1, int num2) { return num1 * num2; } } public class Context { private Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } public int executeOperation(int num1, int num2) { return strategy.operation(num1, num2); } } //Test public class StrategyPatternDemo { public static void main(String[] args) { int num1 = 5; int num2 = 10; Strategy strategy = new ConcreteStrategyA(); Context context = new Context(strategy); int result = context.executeOperation(num1, num2); System.out.println("result = " + result);//result = 15 strategy = new ConcreteStrategyB(); context = new Context(strategy); result = context.executeOperation(num1, num2); System.out.println("result = " + result);//result = 50 } }
思考:
策略模式還是很常見的,像一個專案招標,在明確了需求之後,投標方會根據需求進行專案的模擬實現。招標單位集中所有的投標資料,分別進行對比,最終確定最合適的方案。
《三十六計》由兩大類,然後分出六套,再細化到36個具體計策。
優勢:勝戰計、敵戰計、攻戰計(3大類再擴展出:瞞天過海、以逸待勞等)
劣勢:混戰計、並戰計、敗戰計(3大類再擴展出:空城計、苦肉計等)
當兩軍交戰時,決策者可以根據敵我雙方實際情況判斷己方是處於優勢還是劣勢,靈活的使用具體的計策。
--End