Design Pattern: Behavioral Patterns - Strategy Pattern (策略模式)
Published in
2 min readMay 4, 2020
如何讓物件更靈活?如何設計可以簡單寫出單元測試的物件架構,Strategy Pattern是你的第一選擇
前言
策略模式,主要是讓相似的行為一起時做一個介面,並且可以抽換他們。在沒使用策略模式前,可能會用大量的if/else or swithc去撰寫程式邏輯,而透過策略模式可以將每個邏輯包裝好,並且透過介面方法執行。
類別圖
- 將要執行的演算法/邏輯繼承一個策略的介面
- 客戶端統一呼叫此策略介面的方法
這代表著隨時可以抽換不同的演算法
範例
英雄遊戲的技能施放,技能施放不管是怎樣的效果,他都是一個技能,非常適合用策略模式來撰寫。
- 火焰攻擊和治癒都是實作Skill介面
- 在SkillService中,再透過Map和String的比對拿出Skill實做並且使用
結論
策略模式算是最常用的Design Pattern之一,許多開源項目有相同的意圖但是不同的邏輯時都是使用此模式(例如Socket相關的框架),策略模式主要的特徵有二 :
- 可以替代if/else (switch),讓單元測試更好撰寫
- 擴充方便 (需要增加演算法/邏輯只要繼承或實作繼續往下寫)