C 設計模式(十九) 命令模式

2021-08-19 22:11:06 字數 1754 閱讀 6194

將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化,對請求排隊或記錄請求日誌,以及支援可撤銷的操作。
本文講解命令模式框架,**使用c++語言描述,**存在的不足或問題有望各位指出。

(1)命令模式**框架

#include 

using namespace std;

class receiver

virtual ~command(){}

command(receiver *receiver)

virtual

void execute()=0;

protected:

receiver *receiver =nullptr;

};class concretecommand : public command

void execute() override

private:

};class invoker

void executecommand()

private:

command *command =nullptr;

};int main()

(2)燒烤事例使用命令模式
#include 

#include

using

namespace

std;

class barbecuer

~barbecuer(){}

void bakemutton()

virtual ~command(){}

command(barbecuer *receiver)

virtual

void excutecommand() =0;

protected:

barbecuer *receiver = nullptr;

};class bakemuttoncommand : public command

~bakemuttoncommand(){}

bakemuttoncommand(barbecuer *receiver)

void excutecommand() override

protected:

};class bakemuttonwingcommand :public command

~bakemuttonwingcommand(){}

bakemuttonwingcommand(barbecuer *receiver)

void excutecommand() override

};class waiter

else

}void cancelorder(command *command)

if(it !=order.end())

}void notify()

}private:

vector

order;

bakemuttonwingcommand bwc;

};int main()

1、它能較容易地設計乙個命令佇列

2、在需要的的情況下,可以較容易的將命令計入日誌

3、允許接收請求的一方決定是否要否決請求

4、可以容易地實現對請求的撤銷和重做

5、由於加進新的具體命令類不影響其他的類,因此增加新的具體命令類很容易。命令模式把請求乙個操作的物件與知道怎麼執行乙個操作的物件分割開。

設計模式(十九)命令模式

十九 命令模式 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化 對請求排隊或記錄請求日誌,以及支援可撤銷的操作。優點 第一,能較容易地設計乙個命令佇列 第二,在需要的情況下,可以較容易地將命令記入日誌 第三,允許接受請求的一方決定是否要否決請求 第四,可以容易地實現對請求的撤銷和重...

設計模式筆記(十九) 命令模式

命令模式 command 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化 對請示排隊或記錄請求日誌,以及支援可撤消的操作。優點 第一,它能夠較容易的設計乙個命令佇列 第二,在需要的情況下,可以較容易地將命令記入日誌 第三,允許接收請求的一方是否要否決請求。第四,可以容易地實現對請求...

第十九章 Cach 設計模式 命令模式

思考 命令模式將每個請求封裝成乙個物件,從而讓使用者使用不同的請求把客戶端引數化 將請求進行排隊或者記錄請求日誌,以及支援可撤銷操作。設計模式通病,大量衍生類的建立。去燒烤店吃燒烤,點烤雞翅和羊肉串給廚房下命令。class pha.yx.design.command.barbecuer extend...