iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
自我挑戰組

【從工程師升級成為資深工程師的那檔事】 系列 第 21

【從工程師升級成為資深工程師的那檔事Day 21】設計模式 - 命令模式

  • 分享至 

  • xImage
  •  

命令模式 Command Pattern

定義

將請求以命令(Command)的形式封裝在物件中,並傳遞給調用者(Invoker)。
在依照的情境由不同的接收者(Receiver)去執行命令。

命令(Command):
個人會比較傾向於叫做任務(Task),大致功能負責處理整個事件內容。

調用者(Invoker):
會比較傾向叫做管理者(Manager),畢竟這個物件負責管理命令物件(Command)和執行。

用途

透過將整個執行任務封裝成命令(Command)的方式,
讓我們能在這些命令(Command)執行以前作控管。

像是與使用者的互動中經常發生使用者對於一個按鍵連續點擊,
發生一個事件重複處理多次的問題。

應用

若今天想開發一個網頁應用程式協助管理家中的智能家電:

  • 提供使用者 開啟/關閉 電器(冷氣 & 電風扇)的功能
  • 當使用者一次點到多個開啟/關閉時(或是連點),只處理第一次的指令

接著我們假設一個情境,當使用者不小心連續按下冷氣 & 電風扇的開起按鍵(TurnON)
會發生甚麼事?

結語

從上面的循序圖,可以看出透過調用者(invoker)把命令(Command)先存起來的方式,
能讓整個事件的任務延遲執行。之後再透過excute()優化並執行任務
(解決連續觸擊的問題)

命令模式責任鏈模式都是將事件的發起與事件的處理分割開的方法。
命令模式偏向於事件發起這部份的設計,而責任鏈模式偏向於事件處理的設計。


上一篇
【從工程師升級成為資深工程師的那檔事Day 20】設計模式 - 責任鏈模式
下一篇
【從工程師升級成為資深工程師的那檔事Day 22】設計模式 - 中介者模式
系列文
【從工程師升級成為資深工程師的那檔事】 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言