命令模式,將乙個請求封裝為乙個物件,從而使你可以用不同的請求對客戶進行引數化,對請求排隊或記錄請求日誌,以及支援可撤銷操作。
命令模式的作用
第一,它能較容易地設計乙個命令佇列;第二,在需要的情況下,可以較容易地將命令計入日誌;第三,允許接收請求的一方決定是否要否決請求。第四,可以容易地實現對請求的撤銷和重做;第五,由於加進新的具體命令類不影響其他的類,因此增加新的具體命令類很容易。
命令模式把請求乙個操作的物件與知道怎麼執行乙個操作物件分隔開。
#include #include #include using namespace std;
class barbecurcooker //燒烤廚師類
/*返回具體的命令內容 c#中有反射機制,c++沒有。所以想辦法由命令指標得到命令的具體內容*/
string returncmd() };
class realchickencmd : public abstractcmd //具體的命令--烤雞翅類
; //傳入廚師物件指標
void excutecmd() //執行命令
/*返回具體的命令內容 c#中有反射機制,c++沒有。所以想辦法由命令指標得到命令的具體內容*/
string returncmd() };
char* nowtime() //時間函式 返回當前時間字串指標
class waiter //服務員類
}};int main()
顯示結果: 設計模式學習 命令模式
最近在看 headfirst設計模式 一書,正開始學習設計模式不久。哎,就大四了,感覺落後了別人很多,傷感。現在也只能一步乙個腳印,慢慢進步吧。其實,前面已經學過工廠模式 抽象工廠和工廠方法 觀察者模式 單件模式 策略模式。今天把命令模式看完了,看懂並不是很困難,我想困難的是如何在實際中運用它們。因...
設計模式學習筆記 命令模式
定義 將乙個請求封裝成物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求的日誌,可以提供命令的撤銷和恢復功能。通用類圖如下 通用 如下 命令接受者 public abstract class receiver public class concretereceiver1 extend...
設計模式學習005 命令模式
命令模式用來將 請求 封裝成物件,然後用命令物件來引數化其他物件,而且也可以支援撤銷操作。短短一句話,概括了命令模式的精髓下面講解一下這句話中暗藏的原則 第一 每個命令都是乙個物件,本身有執行 exectue 和撤銷 undo 兩個方法,那個這個物件在執行和撤銷執行方法,總得有個執行物件吧?沒錯,這...