標籤雲

搜尋此網誌

2009/07/07

設計模式小筆記-Strategy Pattern

Strategy Pattern (Policy Pattern)
策略模式

使用時機:
同一個動作可能有不同演算法,而且可能隨時 (或頻繁) 更動

要點:
1. 建立介面,並建立多個子類別去實做介面內的同一個方法
2. 建立一個 Context 類別,建構時把合適的子類別存進一個型別為父類別的變數裡,並撰寫一個 public 方法負責呼叫該父類別變數的演算法方法(也可與 Simple Factory Pattern 結合,把 Factory 類別判斷合適的子類別為何的邏輯放進 Context 類別的建構子裡)
3. 用戶端程式只要傳進合適的參數去 new 出 Context 類別,就可以使用 Context 類別內的 public 方法達到呼叫不同的演算法的目的。

維基百科上的說明與範例

比較 Simple Factory Pattern 與 Strategy Pattern:
1. 簡單工廠模式解決的是物件建立的問題,策略模式的重點則在用一個方式調用一系列演算法,使演算法的變動不會影響到用戶端
2. 對用戶端來說,使用簡單工廠模式必須 import 父類別跟 Factory 類別;但使用策略模式時只需 import 一個 Context 類別就行,耦合度降低

沒有留言: