將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化,對請求排隊或記錄請求日誌,以及支援可撤銷的操作。
本文講解命令模式框架,**使用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...