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 ...