一、Command模式的適用場合:
讓方法運行最常見的方式是調用之,但是在很多情況下,我們不能控制和提供方法執行的上下文和時機。這種情況下,可以把方法封裝在對象中。通過在對象中存儲調用方法所需的信息,就可以讓客戶端或者服務決定何時調用這個方法。
Command模式的意圖是把請求封裝在對象中。
--摘自《Java設計模式》第24章:Command(命令)模式
二、Command模式的經典應用:
Command模式的經典應用就是菜單命令。如何安排才能讓一個類在用戶單擊菜單的時候調用對應的方法呢?解決的方法就是應用多態性,具體做法如下:首先將操作的名稱固定,然后針對不同的類給出不同的實現。
--摘自《Java設計模式》第24章:Command(命令)模式
三、Command模式的簡單例子:
參見http://www.jdon.com/designpatterns/command.htm
四、Command模式的特點:
·有一個頂層的接口,用于表示“執行命令”這個抽象動作,其次該方法中往往會含有用于區分請求類型的形參
·有一至多個實現類,每個實現類實現了接口中“執行命令”這個抽象方法,提供具體的實現
·有一個用來裝載、保存命令執行類的容器對象,負責加載、初始化、查找、調用內部的各個命令對象
五、Command調用的順序:
·初始化命令隊列,裝載各個命令對象(Command接口的實現類)
·接收事件/請求,將其作為參數傳遞給命令隊列
·命令隊列在自己內部查找合適的處理者,調用接口實現方法處理請求
六、Command模式和其它模式的結合:
·Command模式和Memento模式結合,實現“撤銷”操作:
這一點需要和“備忘錄模式”配合,每執行一個操作之前,先保存當前的狀態
·Command模式和Observer模式結合,實現“監聽-觸發”流程:
在GUI界面中,注冊一個監聽器(Observer),監聽各個組件(Observable),當被監聽組件的被激活時,向監聽器傳遞一個信息,監聽器接收信息,作為參數傳遞給命令隊列。命令隊列根據參數查找,執行命令。
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
posted on 2008-04-07 15:13
Paul Lin 閱讀(3471)
評論(0) 編輯 收藏 所屬分類:
模式與重構