Straegy Pattern (策略模式)
策略模式是一種行為設計模式,他能讓你定義一系列算法,並將每種算法分別放入獨立的類中,以使算法的對象能夠相互替換。
策略模式結構

策略模式適合的應用場景
- 當你想使用各種不同的算法,並且希望能在運行期間切換算法時
策略模式可以關聯不同的子 對象,從而間接在運行時更改對象行為
- 當有許多僅在執行某些行為時略有不同的相似類時
策略模式可以將不同的行為抽象到一個獨立類結構中,並將原始類組合成同一個
- 如果算法在上下文的邏輯中不是特別重要,可以將類的業務邏輯和他的算法細節隔離出來
策略模式能將各種算法的代碼、內部數據、依賴關係,跟其他代碼分開來
- 當類中使用了複雜條件運算,以在同一算法的不同變體中切換
策略模式將所有繼承相同接口的算法抽取至獨立類中,因此不需要條件語句。原始對象也不實現所有算法的變體,而是將執行工作委託給其中一個獨立算法的對象。
優缺點
⭕優點
- 在運行時切換對象的算法
- 將算法的實現和算法的代碼隔離開來
- 使用組合代替繼承
- 開放封閉原則。無須對上下文修改,就可以引入新策略
❌缺點
- 若算法極少發生改變,沒有理由引入新的類和介面,會使程序更為複雜
- 客戶端必須知道策略間的不同,因為要選擇合適的策略
- 許多程式語言支持函數類型,允許在匿名函數中實現不同版本的算法。這些函數就和使用策略對象完全相同,無須借助額外的類和介面來保持程式乾淨。