Command設計模式–學習總結

來源:互聯網
上載者:User

意圖:

         將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支援可撤消的操作。

適用環境:

(1) 抽象出待執行的動作以參數化某對象。你可用過程語言中的回調(Callback)函數表達這種參數化機制。所謂回呼函數是指函數先在某處註冊,而它將在稍後某個需要的時候被調用。Command模式是回調機制的一個物件導向的替代品。

(2) 在不同的時刻指定、排列和執行請求。一個Command對象可以有一個與初始請求無關的生存期。如果一個請求的接收者可用一種與地址空間無關的方式表達,那麼就可將負責該請求的命令對象傳送給另一個不同的進程並在那兒實現該請求。

(3) 支援取消操作。Command的Excute操作可在實施操作前將狀態儲存起來,在取消操作時這個狀態用來消除該操作的影響。Command介面必須添加一個Unexcute操作,該操作取消上一次Excute調用的效果。執行的命令被儲存在一個曆史列表中。可通過向後和向前遍曆這一列表並分別調用Unexcute和Excute來實現重數不限的“取消”和“重做”。

(4) 支援修改日誌,這樣當系統崩潰時,這些修改可以被重做一遍。在Command介面中添加裝載操作和儲存操作,可以用來保持變動的一個一致的修改日誌。從崩潰中恢複的過程包括從磁碟中重新讀入記錄下來的命令並用Excute操作重新執行它們。

(5) 用構建在原語操作上的高層操作構造一個系統。這樣一種結構在支援事務(transaction)的資訊系統中很常見。一個事務封裝了對資料的一組變動。模式提供了對事務進行建模的方法。Command有一個公用的介面,使得你可以用同一種方式調用所有的事務。同時使用該模式也易於添加新事務以擴充系統。

 

結構:



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.