1、command.h
#ifndef command_h
#define command_h
#include #include #include using namespace std;
class chef //廚師,具體命令的執行者
;class command //命令基類
;class makemuttoncommand : public command //具體命令,繼承命令基類,與廚師具體命令的執行者相聯絡
;class makechickenwingcommand : public command 具體命令,繼承命令基類,與廚師具體命令的執行者相聯絡
;class waiter //侍者、服務員,命令的接收者和協調者
;#endif // command_h
2、command.cpp
#include "command.h"
chef::chef(){}
chef::~chef(){}
void chef::makechickenwing()
void chef::makemutton()
command::command(chef *c)
command::~command(){}
makemuttoncommand::makemuttoncommand(chef *c):command(c){}
void makemuttoncommand::excutecommand()
makechickenwingcommand::makechickenwingcommand(chef *c):command(c){}
void makechickenwingcommand::excutecommand()
waiter::waiter(){}
waiter::~waiter(){}
void waiter::addorder(command *order)
void waiter::removeorder(command *order)
}void waiter::notifyexcute()
}
3、main.cpp
/*
開發ide:qt creater
開發環境:qt c++
參考**:神秘果:
定義:命令模式(command):將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化;
對請求排隊或記錄請求日誌,以及支援可撤銷的操作。
理解:1.客戶只需要知道向waiter發出命令(多個命令),而不是將命令直接傳達給具體的執行者。
當然,客戶是需要知道都有什麼命令的。
2.客戶只發命令,不需要知道由誰來執行和怎麼執行,體現出高內聚的特點。
使用者在發出命令後,是允許撤回的,所以還可以增加乙個命令「undo 」,undo是狀態的變更。
3.命令模式(command)把請求封裝成乙個物件,使請求能夠儲存更多的資訊擁有更多的能力。
命令模式同樣能夠把請求的傳送者和接收者解耦,但它不關心請求將以何種方式被處理。
命令模式經常與職責鏈模式(chain of responsibility)和組合模式(composite)一起使用,
職責鏈模式處理命令模式封裝的物件,組合模式可以把簡單的命令物件組合成複雜的命令物件。
要點:1.是消除被呼叫函式的選擇與那個函式被呼叫的位置之間的聯絡。
命令模式就是乙個函式物件:乙個作為物件的函式。通過將函式封裝為物件,就能夠以引數的形式將其傳遞給其他函式或者物件。
2.是允許向乙個函式或者物件傳遞乙個想要的動作。
命令模式的乙個常見的例子就是在應用程式中「撤銷操作」功能的實現。每次在使用者進行某項操作的時候,
相應的「撤銷操作」命令物件就被置入乙個佇列中,而每個命令物件被執行後,程式的狀態就倒退一步。
應用:廚師chef可以做兩個動作命令:makemutton和makechickenwing;服務員侍者waiter負責命令的接收和協調;
使用者client可以建立多種命令,服務員waiter負責將這些命令新增或刪除形成一條佇列。
使用者client呼叫服務員侍者waiter執行些佇列中的命令。
以上文字說明,從網上整理而來,有可能部分與其他同仁相同,請諒解,希望我們能夠共同交流,謝謝!
*/int main(int argc, char *argv)
執行結果:
=== jhluroom start *****===
add order
add order
add order
add order
notifyexcute for 1 is:
****** mutton
****** mutton
****** chickenwing
****** chickenwing
remove order
remove order
notifyexcute for 2 is:
****** mutton
****** chickenwing
=== jhluroom finish _^_ ===
設計模式 命令設計模式
一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象command 命令的具體實現concretecommand 命令處理者抽象ireceiver 命令處理者的具體實現concretereceiver 命令的呼叫者invoker 客戶端client...
設計模式 命令模式
1 命令模式的角色組成 1 命令角色 command 生命執行操作的介面。介面或抽象類來實現。2 具體命令角色 concrete command 將乙個接收者物件繫結於乙個動作 呼叫接收者相應的操作,以實現命令角色宣告的執行操作的介面。3 客戶角色 client 建立乙個具體命令物件 並可以設定它的...
設計模式 命令模式
命令模式 將 請求 封裝成物件,以便使用不同的請求 佇列或者日誌來引數化其他物件。命令模式也支援可撤銷的操作。命令者將物件動作和接收者包進物件中,public inte ce command public class lightoncommand implements command public ...