分類
行為型模式。
這個模式在解決什麼
策略模式要解決的是:同一類型的工作可能有多種做法,但我們不想把所有分支都硬寫在同一個類別裡。
它會把一組可替換的演算法或行為封裝起來,讓外部在需要時切換。
核心做法
做法通常是:
- 先定義一個共同介面
- 把不同做法各自實作成不同策略
- 讓使用端持有某個策略,並把行為委派給它
因此,真正被替換的不是資料,而是「做事的方法」。
什麼時候適合用
很適合用在:
- 同一個功能有多種實作方式
- 你希望在執行期切換做法
- 你想把大量條件分支拆開,避免單一類別越來越腫
例子
在 Floating Otter 的互動設計裡,場景中有許多可互動物件,玩家可能會對它們做三類操作:
- 敲擊
- 抓取
- 餵食
不同物件面對同一種操作,反應又可能不同。像是魚被敲到可能暈眩,貝類被敲到則可能扣血。這時就可以把各種互動反應拆成策略,讓物件依照自身需求掛上對應做法,而不是把所有判斷都堆在一起。
類圖

這一篇先記住的重點
- 策略模式把一組可替換的行為封裝成獨立物件
- 它適合處理「同一件事有多種做法」的情境
- 當條件分支越來越多時,拆成策略通常會更乾淨
參考書目
《Head First Design Patterns》Eric Freeman, Elisabeth Robson, Kathy Sierra, Bert Bates