將請求以命令(Command)的形式封裝在物件中,並傳遞給調用者(Invoker)。
在依照的情境由不同的接收者(Receiver)去執行命令。
命令(Command):
個人會比較傾向於叫做任務(Task),大致功能負責處理整個事件內容。
調用者(Invoker):
會比較傾向叫做管理者(Manager),畢竟這個物件負責管理命令物件(Command)和執行。
透過將整個執行任務封裝成命令(Command)的方式,
讓我們能在這些命令(Command)執行以前作控管。
像是與使用者的互動中經常發生使用者對於一個按鍵連續點擊,
發生一個事件重複處理多次的問題。
若今天想開發一個網頁應用程式協助管理家中的智能家電:
接著我們假設一個情境,當使用者不小心連續按下冷氣 & 電風扇的開起按鍵(TurnON)
會發生甚麼事?
從上面的循序圖,可以看出透過調用者(invoker)把命令(Command)先存起來的方式,
能讓整個事件的任務延遲執行。之後再透過excute()
優化並執行任務
(解決連續觸擊的問題)
命令模式與責任鏈模式都是將事件的發起與事件的處理分割開的方法。
命令模式偏向於事件發起這部份的設計,而責任鏈模式偏向於事件處理的設計。