命令模式

作用
命令模式可將“動(dòng)作的請(qǐng)求者”從“動(dòng)作的執(zhí)行者”對(duì)象中解耦;
命令模式將“請(qǐng)求”封裝成對(duì)象,以便使用不同的請(qǐng)求,隊(duì)列或者日志來(lái)參數(shù)化其他對(duì)象,命令對(duì)象也支持撤銷(xiāo)操作;

命令也可以將運(yùn)算塊打包(一個(gè)接收者和一組動(dòng)作),形成一個(gè)命令組合,存儲(chǔ),傳遞或調(diào)用它們;比如:打開(kāi)一個(gè)總開(kāi)關(guān)實(shí)現(xiàn)打開(kāi)電源,音響,電視操作;

** 實(shí)現(xiàn)方式 **

  1. 調(diào)用者 只關(guān)心 Command接口;
  2. 調(diào)用者與接收者不存在直接關(guān)系,而是通過(guò) Command接口進(jìn)行通信;
  3. 具體命令與其對(duì)應(yīng)的接收者綁定在一起,命令對(duì)象 包含接收者,讓命令對(duì)象控制接收者;

類(lèi)圖

Paste_Image.png
  1. Command接口:為所有命令的接口,調(diào)用命令對(duì)象execute(),就可以讓接收者進(jìn)相關(guān)的動(dòng)作;
  2. ConcreteCommnad:為具體命令類(lèi),實(shí)現(xiàn)Command接口,并持有一個(gè) Receiver接收者的實(shí)例;定義了動(dòng)作與接收者之間的綁定關(guān)系。調(diào)用者只需要調(diào)用execute(),發(fā)出請(qǐng)求,然后由她來(lái)調(diào)用接收者的處理動(dòng)作;實(shí)現(xiàn)解耦;
  3. Receiver:為命令接收者類(lèi),接收者知道如何處理命令請(qǐng)求,任務(wù)類(lèi),都可以當(dāng)接收者;
  4. Invoker: 為 調(diào)用者類(lèi),持有命令接口對(duì)象,用來(lái)調(diào)用命令對(duì)象的 execute(),用來(lái)發(fā)出命令請(qǐng)求;
  5. Client: 為客戶端,客戶端負(fù)責(zé)創(chuàng)建 ConcreteCommand,并設(shè)置接收者;
最后編輯于
?著作權(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)容

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