C Chapter19 命令模式

2021-05-22 23:59:56 字數 795 閱讀 3333

命令模式(command),將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可撤銷的操作。

命令模式的優點:

第一,它能較容易地設計乙個命令佇列;

第二,在需要的情況下,可以較容易地將命令記入日誌;

第三,允許接收請求的一方決定是否要否決請求;

第四,可以容易地實現對請求的撤銷和重做;

第五,由於加進新的具體命令類不影響其他的類,因此增加新的具體命令類很容易。

最關鍵的優點是,命令模式把請求乙個操作的物件與知道怎麼執行乙個操作的物件分隔開。

實際應用

工程結構:

(1)命令類 command.h 、concretecommand.h

(2)服務員類 cooker.h、 waiter.h

(3)客戶端類 command.cpp

(1)命令類 command.h 、concretecommand.h

(2)服務員類 cooker.h、 waiter.h

(3)客戶端類 command.cpp

補充一條原則:

敏捷開發原則告訴我們,不要為**新增基於猜測的、實際不需要的功能。如果不清楚乙個系統是否需要命令模式,一般就不要著急去實現 它,事實上,在需要的時候通過重構實現這個模式並不困難,只有在真正需要功能時,把原來的**重構為合適的模式才有意義。

C Chapter3 裝飾模式

單一職責原則 單一職責原則,就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會消弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。軟體設計真正要做的許多內容,就是發現職責並把那些...

C Chapter1 簡單工廠模式

題目 實現計算器的輸入2個數和運算子,得到結果 工程結構 1 標頭檔案 coperationfactory.h 運算子工廠類 2 原始檔 factory.cpp 客戶端應用類,主函式所在 3 運算類 coperation.cpp 運算子基類 coperation.h coperationadd.h ...

C Chapter16 迭代器模式

迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。當你需要訪問乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,就應該考慮用迭代器模式。同時需要對聚集有多種方式遍歷時,可以考慮用迭代器模式。為遍歷不同的聚集結構提供如開始 下乙個 是否結束 當前...