命令模式(command):將乙個請求封裝為乙個物件,從而使你可以不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可撤銷的操作。
命令模式結構圖:
command類,用來宣告執行操作的介面。
class command
protected:
receiver *receiver;
public:
command(receiver * receiver)
this->receiver = receiver;
virtual void execute()=0;
concretecommand類,將乙個接收者物件繫結於乙個動作,呼叫接收者相應的操作,以實現execute。
class concretecommand :public command
public:
concretecommand(receiver * receiver):command(recciver){}
void execute()
receiver->action();
invoker類,要求該命令執行這個請求。
class invoker
private:
command * command;
public:
void setcommand(command * command)
this->command= command;
void executecommand()
command->execute();
receiver類,知道如何實施與執行乙個與請求相關的操作,任何類都可能做為乙個接收者。
class receiver
public:
void action()
cout<< 「執行請求!」客戶端**,建立乙個具體命令物件並設定它的接收者。
void main()
receiver *r = new receiver();
command *c = new concretecommand(r);
invoker *i = new invoker();
i->setcommand(c);
i->executecommand();
命令模式作用:
1. 他能較容易地設計乙個命令佇列;
2. 在需要的情況下,可以較容易地將命令記入日誌;
3. 允許接收請求的一方決定是否要否決請求
4. 可以容易地實現對請求的撤銷和重做;
5. 由於加進新的具體命令類不影響其他的類,因此增加新的具體命令類很容量。
c 設計模式(命令模式)
good 一 建立命令佇列 二 可以將命令記入日誌 三 接收請求的一方可以拒絕 四 新增乙個新命令類不影響其它類 命令模式把請求乙個操作的物件與知道怎麼操行乙個操作的物件分開 例 include include include using namespace std 烤肉師傅 class barbu...
c 設計模式 命令模式
在軟體開發系統中,常常出現 方法的請求者 與 方法的實現者 之間存在緊密的耦合關係。這不利於軟體功能的擴充套件與維護。例如,想對行為進行 撤銷 重做 記錄 等處理都很不方便,因此 如何將方法的請求者與方法的實現者解耦?變得很重要,命令模式能很好地解決這個問題。在現實生活中,這樣的例子也很多,例如,電...
c 設計模式 命令模式
一 命令 command 模式 命令 command 模式屬於物件的行為模式 gof95 命令模式又稱為行動 action 模式或交易 transaction 模式。命令模式把乙個請求或者操作封裝到乙個物件中。命令模式允許系統使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌,可以提供命令的撤...