1 前言
在面向對象中,把指令封裝在各種命令對象中。命令對象可以被傳遞而且在指定時刻被不同的客戶端復用。這一概念精心設計而來的設計模式叫做命令(Command)模式。
2 詳述
2.1 簡述
命令對象封裝了如何對目標執行指令的信息,因此客戶端或調用者不必了解目標的任何細節,卻仍可以對他執行任何已有的操作。通過把請求封裝成對象,客戶端可以把它參數化並置入對類或日志中,也能夠支持可撤銷的操作。命令對象將一個或多個動作綁定到特定的接收器。命令模式消除了作為對象的動作和執行它的接收器之間的綁定。
將請求封裝為一個對象,從而可用不同的請求對客戶進行參數化,對請求排隊或記錄請求日志,以及支持可撤銷的操作。
2.2 何時使用
(1)想讓應用程序支持撤銷與恢復;
(2)想要對象參數化一個動作以執行操作,並用不同命令對象來代替回調函數;
(3)想要在不同時刻對請求進行指定,排列和執行;
(4)想記錄修改日志,這樣在系統故障時,這些修改可在後來重做一遍;
(5)想讓系統支持事務,失誤封裝了對數據的一系列修改。事務可以建模為命令對象。
3 結語
消除應用程序中命令,調用器,接收器和客戶端的耦合,其好處顯而易見。如果特定的命令需要在現實中修改,那麼其他組件中得大部分都不受影響。而且添加新的命令類非常容易,因為不必為此修改已有的類。
以上是所有內容,希望對大家有所幫助。