命令模式

命令模式:將一個(gè)請(qǐng)求封裝成一個(gè)對(duì)象,從而讓你使用不同的請(qǐng)求把客戶端參數(shù)化,對(duì)請(qǐng)求排隊(duì)或者記錄請(qǐng)求日志,可以提供命令的撤銷(xiāo)和恢復(fù)功能。

命令模式
Command

Command:定義命令的統(tǒng)一接口。


ConcreteCommand

ConcreteCommand:Command接口的實(shí)現(xiàn)者,用來(lái)執(zhí)行具體的命令,某些情況下可以直接用來(lái)充當(dāng)Receiver。


Invoker

Invoker:命令的請(qǐng)求者,是命令模式中最重要的角色。這個(gè)角色用來(lái)對(duì)各個(gè)命令進(jìn)行控制。


Receiver

Receiver:命令的實(shí)際執(zhí)行者。


適用場(chǎng)景:1. 命令的發(fā)送者和命令執(zhí)行者有不同的生命周期。命令發(fā)送了并不是立即執(zhí)行。

2. 命令需要進(jìn)行各種管理邏輯。

3. 需要支持撤消\重做操作(這種狀況的代碼大家可以上網(wǎng)搜索下,有很多,這里不進(jìn)行詳細(xì)解讀)。


命令模式的優(yōu)缺點(diǎn):1、首先,命令模式的封裝性很好:每個(gè)命令都被封裝起來(lái),對(duì)于客戶端來(lái)說(shuō),需要什么功能就去調(diào)用相應(yīng)的命令,而無(wú)需知道命令具體是怎么執(zhí)行的。比如有一組文件操作的命令:新建文件、復(fù)制文件、刪除文件。如果把這三個(gè)操作都封裝成一個(gè)命令類(lèi),客戶端只需要知道有這三個(gè)命令類(lèi)即可,至于命令類(lèi)中封裝好的邏輯,客戶端則無(wú)需知道。

2、其次,命令模式的擴(kuò)展性很好,在命令模式中,在接收者類(lèi)中一般會(huì)對(duì)操作進(jìn)行最基本的封裝,命令類(lèi)則通過(guò)對(duì)這些基本的操作進(jìn)行二次封裝,當(dāng)增加新命令的時(shí)候,對(duì)命令類(lèi)的編寫(xiě)一般不是從零開(kāi)始的,有大量的接收者類(lèi)可供調(diào)用,也有大量的命令類(lèi)可供調(diào)用,代碼的復(fù)用性很好。比如,文件的操作中,我們需要增加一個(gè)剪切文件的命令,則只需要把復(fù)制文件和刪除文件這兩個(gè)命令組合一下就行了,非常方便。

3、最后命令模式的缺點(diǎn),那就是命令如果很多,開(kāi)發(fā)起來(lái)就要頭疼了。特別是很多簡(jiǎn)單的命令,實(shí)現(xiàn)起來(lái)就幾行代碼的事,而使用命令模式的話,不用管命令多簡(jiǎn)單,都需要寫(xiě)一個(gè)命令類(lèi)來(lái)封裝。

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

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

  • 1 場(chǎng)景問(wèn)題# 1.1 如何開(kāi)機(jī)## 估計(jì)有些朋友看到這個(gè)標(biāo)題會(huì)非常奇怪,電腦裝配好了,如何開(kāi)機(jī)?不就是按下啟動(dòng)按...
    七寸知架構(gòu)閱讀 2,889評(píng)論 1 59
  • 目錄 本文的結(jié)構(gòu)如下: 什么是命令模式 為什么要用該模式 模式的結(jié)構(gòu) 代碼示例 優(yōu)點(diǎn)和缺點(diǎn) 適用環(huán)境 模式應(yīng)用 總...
    w1992wishes閱讀 1,239評(píng)論 2 9
  • 定義: 將一個(gè)請(qǐng)求封裝成一個(gè)對(duì)象,從而讓你使用不同的請(qǐng)求把客戶端參數(shù)化,對(duì)請(qǐng)求排隊(duì)或者記錄請(qǐng)求日志,可以提供命令的...
    賈里閱讀 327評(píng)論 0 0
  • 本篇文章介紹一種設(shè)計(jì)模式——命令模式。本篇文章內(nèi)容參考《JAVA與模式》之命令模式。 一、命令模式的概念 命令模式...
    Ruheng閱讀 1,634評(píng)論 3 19
  • 做生意賺錢(qián)發(fā)財(cái)是需要能力素質(zhì)的,如何提高做生意賺錢(qián)發(fā)財(cái)?shù)哪芰δ兀课矣X(jué)得現(xiàn)在市面上絕大多數(shù)教人做生意賺錢(qián)的書(shū)都是誤人...
    楊金提閱讀 1,709評(píng)論 0 1

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