行為型設(shè)計模式.命令模式

一、概念

本質(zhì)是一種數(shù)據(jù)驅(qū)動、事件驅(qū)動的設(shè)計模式。

1.1、定義

又稱為動作(Action)模式或事務(wù)(Transaction)模式。將一個請求封裝為一個對象,從而使我們可用不同的請求對客戶進(jìn)行參數(shù)化;對請求排隊或者記錄請求日志,以及支持可撤銷的操作。


Command.png
  • Receiver,接收者類:封裝命令的執(zhí)行過程
  • Command,命令類抽象:對命令的封裝,其需要指定接收者Receiver
  • Invoker,調(diào)用者類:封裝命令的實際調(diào)用者,執(zhí)行的時候需要指定具體的ConcreteCommand
  • ConcreteCommand,具體命令類
1.2、解決的問題
  • 問題分析:存在這樣一種場景,派發(fā)一個事件Event,執(zhí)行對應(yīng)的動作。即
  • 模式的解決思路:將「命令Command」的「調(diào)用者Invoker」和「接收者Receiver」隔離解耦,命令、調(diào)用者、接收者彼此獨立變化。
    命令模式可以對發(fā)送者和接收者完全解耦,發(fā)送者與接收者之間沒有直接引用關(guān)系,發(fā)送請求的對象只需要知道如何發(fā)送請求,而不必知道如何完成請求。

二、模式的應(yīng)用和優(yōu)缺點

2.1、應(yīng)用場景
  • 實例:
    struts 1 中的 action 核心控制器 ActionServlet 只有一個,相當(dāng)于 Invoker,而模型層的類會隨著不同的應(yīng)用有不同的模型類,相當(dāng)于具體的 Command。
2.2、優(yōu)缺點
  • 優(yōu)點
    降低系統(tǒng)的耦合度
    新的命令可以很容易地加入到系統(tǒng)中
    可以比較容易地設(shè)計一個命令隊列和宏命令(組合命令)
    可以方便地實現(xiàn)對請求的Undo和Redo

  • 缺點
    可能會導(dǎo)致某些系統(tǒng)有過多的具體命令類,增加系統(tǒng)的復(fù)雜性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容