理解策略模式

金志傑發表於2018-01-17

策略模式

行為模式關注行為和演算法的封裝。
創造模式關注物件的建立,客戶端程式無權通過new的方式申請記憶體,構建物件。創造者模式提供方法供客戶端選擇。

理解策略模式

Context 為實際演算法的呼叫者,Strategy為演算法的統一對外介面,不同的演算法對其有不同的實現。
Context只需依賴不同的演算法,就可以通過統一的Startegy介面,來實現演算法之間的呼叫。

Strategy通常使用抽象類來實現,抽出演算法中公共的邏輯程式碼,避免程式碼重複

策略模式結構解析

  1. Context: 對策略進行二次封裝,避免高層程式碼直接對策略邏輯進行呼叫。
  2. AbstractStrategy: 為環境類提供統一對外介面;對演算法的公共邏輯進行封裝,避免程式碼重複。
  3. StrategyA,StrategyB: 具體的策略,根據注入的不同進行切換。

Tips: 善用抽象類,模板模式來進行解耦,增加程式碼之間呼叫的靈活性。

策略模式優點

  1. 支援開放封閉原則,可以靈活的增加其他策略,也可以方便的修改某一個演算法的邏輯。
  2. 避免多重判斷條件,不利於後期維護。

策略模式缺點

  1. 必須暴露所有的策略,供客戶端程式選擇呼叫。程式的關聯性太強。
  2. 程式碼量大量增加。

相關文章