Design Pattern: Behavioral Patterns — Command Pattern (命令模式)
Published in
2 min readMay 2, 2020
讓物件的行為在更解偶一點,你可以參考Command Pattern
前言
Command Pattern與Chain of Responsibility是非常相似的。
Chain of Responsibility將邏輯拆開,透過物件之間的連接做呼叫,物件間的聯就透過建構者或Dependency Inject注入。
而兩者的差別在於粒度的不同,Commande Pattern比較偏向將一個物件原本的method拆解成一個個的Command,而Chain of Responsibility的Handler粒度更大一點,更像是一個個完整邏輯的物件。
類別圖
- 設計Command介面
- 實作Command介面並解複寫Execute方法
- 透過Receiver組裝Command組織成自己的物件邏輯,提供給Client呼叫
範例
英雄遊戲中的,常用組合招式非常適合用Command Pattern實踐,邏輯如下
- 使用者可以將不同招式組裝成快捷鍵施放
- 範例: 施毒 -> 祝福(加攻擊力) -> 攻擊
實作過程
- 設計SkillCommand
- 設計不同的Skill實作SkillComand並複寫Method實踐自己的邏輯
- 透過一個Reciver組裝每個Skill包裝成自己的邏輯
- Client執行
結論
- Command Pattern如同Chain of Responsibilty可以將擁有複雜邏輯的物件與樹狀關係解偶
- 可以重複使用不同的Command組裝成新的邏輯結構
- Command可以透過Iterative方式執行