Command Pattern
將請求封裝成對象,以便使用不同的請求來進行參數化。
命令模式也支持隊列、日誌及可撤銷的操作。
Example: 機器人廚師
命令模式會將類別分成三類:
分別是 調用者 (Invoker) 、 接收者 (Receiver) 及 命令 (Command) 。
優點:
容易滿足開放封閉原則(需要時新增命令即可)。
若有需要,可將命令記錄至日誌中,便於重做 (redo) 及撤消 (undo)。
允許接收者決定是否否決請求。
缺點:
會做出許多小類別。
與其他模式的比較:
[策略模式]:
以四則運算來比喻的話,策略模式像是算法族中,有加減乘除四種算法;
而命令模式則像是一段計算過程:加三、減五、乘二。
每個運算都是一道命令。
ʕ •ᴥ•ʔ:透過將命令切分成類別,
解耦了調用者(命令請求者)與接收者(命令執行者)的依賴關係。