posts - 262,  comments - 221,  trackbacks - 0
          一、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 閱讀(3476) 評論(0)  編輯  收藏 所屬分類: 模式與重構
          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 望都县| 全州县| 苍梧县| 瓦房店市| 江源县| 沽源县| 襄樊市| 石家庄市| 青阳县| 福州市| 象山县| 商水县| 阿勒泰市| 高淳县| 古丈县| 汉沽区| 兴宁市| 汽车| 遂昌县| 宁武县| 中江县| 咸宁市| 芦溪县| 喀喇沁旗| 鄂伦春自治旗| 霞浦县| 黄山市| 化隆| 平果县| 九台市| 丹凤县| 怀集县| 临漳县| 正安县| 鄂托克前旗| 西贡区| 柞水县| 陵川县| 江北区| 瓦房店市| 封丘县|