設計模式 命令模式

2021-04-19 20:31:48 字數 1232 閱讀 9230

1.

命令模式的角色組成

1)命令角色(

command

):生命執行操作的介面。介面或抽象類來實現。 2)

具體命令角色(

concrete command

):將乙個接收者物件繫結於乙個動作;呼叫接收者相應的操作,以實現命令角色宣告的執行操作的介面。 3)

客戶角色(

client

):建立乙個具體命令物件(並可以設定它的接收者)。 4)

請求者角色(

invoker

):呼叫命令物件執行這個請求。 5)

接收者角色(

receiver

):知道如何實施與執行乙個請求相關的操作。任何類都可能作為乙個接收者。  

命令模式類圖:暫缺 

2.

應用例項

(本人感覺這個例子比較能切合類圖的含義)

場景:某日,

我去飯店吃飯,進去後對服務員說:「我要乙個三明治」,服務員對廚師喊,「三明治乙份」,我然後又說:「再來個煮雞蛋。」服務員對廚師喊,「煮雞蛋乙份」,我說:「沒了,就這些」,服務員喊,「就這些了,開做。」於是廚師開始做。

#include "stdafx.h"

#include 

#include 

#include 

using

namespace std;

//icommand相當於服務員喊話的標準

class icommand;};

//receiver 相當於廚師

class receiver

//做三明治

void cooksandwich() 

};//喊話內容:雞蛋

class cookeggcommand : public icommand

void execute()

};//喊話內容:三明治

class cooksandwichcommand : public icommand

void execute()

};//invoker 相當於服務員

class invoker

//喊話

void setcommand(icommand* command)

//執行喊話內容

void executecommand()}};

int main()

設計模式 命令設計模式

一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象command 命令的具體實現concretecommand 命令處理者抽象ireceiver 命令處理者的具體實現concretereceiver 命令的呼叫者invoker 客戶端client...

設計模式 命令模式

1 command.h ifndef command h define command h include include include using namespace std class chef 廚師,具體命令的執行者 class command 命令基類 class makemuttonco...

設計模式 命令模式

命令模式 將 請求 封裝成物件,以便使用不同的請求 佇列或者日誌來引數化其他物件。命令模式也支援可撤銷的操作。命令者將物件動作和接收者包進物件中,public inte ce command public class lightoncommand implements command public ...