設計模式-命令模式-Command

命令模式-Command

源碼地址:https://github.com/mumushuiding/golang-design-pattern/tree/master/08_Command

❓ 問題

命令模式可以把一個命令的 形成 和 執行 在時間上去耦。也就是命令生成和執行可以在不同的時間發生。

✔️ 解決方法

一個 具體 命令(execute()/執行)和指向 接收 對象(LightSource)的引用被 封裝 在一個 基於 接口(ICommand)的對象(LightOffCommand)中,這個對象被交給調用者(LightSwitch)。調用者從客戶得到命令,然後 初始化 用於執行命令的方法。

⚡️類圖

 

?參與者

  • ICommand(命令接口)。定義了命令操作
  • LightOffCommand(具體命令)。實現了命令接口ICommand,封裝 了一個命令, 存儲 了執行這個命令所需的信息。
  • LightSwitch (調用者)。? 存儲 了指向一個命令的引用,引用的類型是ICommand。
  • ?LightSource (接收者)。 識別 所有執行命令相關操作的類。

?評價

?優點

  • ?生成和執行在時間上 解耦
  • ?具體命令可以動態 更換
  • ♻️命令對象可以 複用

?缺點

  • 這個模式用於分佈式系統時相當複雜
  • 調用命令時會生成額外開銷
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章