文章中部分內容和思路來自《head first設計模式》
將"請求"封裝成物件,以便使用不同的請求、佇列或日誌來引數化其他物件。命令模式也支援可撤銷的
1.案例說明
假設客戶去銀行辦理訪問款業務,業務員根據客戶業務的不同對客戶賬戶進行訪問款操作。在這個案例中,我們可以將業務員看做命令的發出者,客戶賬號看做命令接收者,具體命令是存款取款
2.**實現
----------
icommond.h
----------
#ifndeficommond_h
#defineicommond_h
classicommond
;
#endif----------------//icommond_h
moneyincommond.h
----------------
#ifndefmoneyincommond_h
#definemoneyincommond_h
#include"icommond.h"
#include"account.h"
classmoneyincommond
:public
icommond
;
#endif------------------//moneyincommond_h
moneyincommond.cpp
------------------
#include"moneyincommond.h"
moneyincommond::moneyincommond(account*acc,
float
amount)
moneyincommond::~moneyincommond()
void-----------------moneyincommond::execute
()
moneyoutcommond.h
-----------------
#ifndefmoneyoutcommond_h
#definemoneyoutcommond_h
#include"icommond.h"
#include"account.h"
classmoneyoutcommond
:public
icommond
;
#endif-------------------//moneyoutcommond_h
moneyoutcommond.cpp
-------------------
#include"moneyoutcommond.h"
moneyoutcommond::moneyoutcommond(account*acc,
float
amount)
moneyoutcommond::~moneyoutcommond()
void---------moneyoutcommond::execute
()
account.h
---------
#ifndefaccount_h
#defineaccount_h
classaccount
;
#endif-----------//account_h
account.cpp
-----------
#include"account.h"
account::account()
voidaccount::moneyin(float
value)
voidaccount::moneyout(float
value)
float---------account::gettotal()
const
invoker.h
---------
#ifndefinvoker_h
#defineinvoker_h
#include"icommond.h"
classinvoker
;
#endif-----------//invoker_h
invoker.cpp
-----------
#include"invoker.h"
invoker::invoker()
voidinvoker::setcommond(icommond
*cmd)
void--------invoker::commondexecute()
main.cpp
--------
/**
*設計模式-命令模式
*要素:1,執行者2,抽象命令
3,具體命令
4,接受者[作用物件]
*/
#include
#include
#include"account.h"
#include"invoker.h"
#include"moneyincommond.h"
#include"moneyoutcommond.h"
int案例不太好,但基本能說明問題,《head first》一書中舉了乙個遙控器的例子,有興趣的可以看看main(int
argc,
char
*argv)
設計模式 命令設計模式
一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象command 命令的具體實現concretecommand 命令處理者抽象ireceiver 命令處理者的具體實現concretereceiver 命令的呼叫者invoker 客戶端client...
設計模式 命令模式
1 命令模式的角色組成 1 命令角色 command 生命執行操作的介面。介面或抽象類來實現。2 具體命令角色 concrete command 將乙個接收者物件繫結於乙個動作 呼叫接收者相應的操作,以實現命令角色宣告的執行操作的介面。3 客戶角色 client 建立乙個具體命令物件 並可以設定它的...
設計模式 命令模式
1 command.h ifndef command h define command h include include include using namespace std class chef 廚師,具體命令的執行者 class command 命令基類 class makemuttonco...