命令模式(Command): 講一個請求封裝爲一個對象。從而使你可用不一樣的請求對客戶進行參數化。對請求隊列或記錄請求日誌。以及支持可撤銷的操做。編程
命令模式長處:函數
(1),它能較easy地設計一個命令隊列。spa
(2)。在需要的狀況下。可以較easy地將命令計入日誌。設計
(3),贊成接收請求的一方決定是否要否決請求。日誌
(4)。可以easy地實現請求的撤銷和重作。對象
(5)。由於加進新的詳細命令類不影響其它的類,所以添加新的詳細命令類很是easy。接口
(6)。命令模式把請求一個操做的對象與知道怎麼運行一個操做的對象切割開。隊列
(7)。敏捷開發告訴咱們。不要爲代碼加入基於推測的、實際不需要的功能。ci
假設不清楚一個系統是否需要命令模式。通常就不要着急去實現它,其實,在需要的時候經過重構實現這個模式並不困難,僅僅有在真正需要如撤銷恢復操做等功能時。把原來的代碼重構爲命令模式纔有意義。開發
Effective C++ 之模板和泛型編程
1:瞭解隱式接口和編譯器多態
(1)。classes 和模板都支持接口 (interfaces)和多態(polymorphism)。
(2)。對 classes 而言接口是顯式的(explicit),以函數簽名爲中心。多態則是經過 virtual 函數發生於執行期。
(3),對 template 參數而言。接口是隱式的(implicit),奠定於有效表達式。多態則是經過 template 具現化和函數重載解析(function overloading resolution)發生於編譯期。
2:瞭解 typename 的雙重意義
(1),聲明 template 參數時,前綴keyword class 和 typename 可互換。
(2)。請使用keyword typename 標識嵌套從屬類型名稱。但不得在 base class lists 或 member initialization list 內以它做爲 base class 修飾符。