posts - 262,  comments - 221,  trackbacks - 0
          一、Command模式的適用場合:

          讓方法運行最常見的方式是調(diào)用之,但是在很多情況下,我們不能控制和提供方法執(zhí)行的上下文和時機。這種情況下,可以把方法封裝在對象中。通過在對象中存儲調(diào)用方法所需的信息,就可以讓客戶端或者服務(wù)決定何時調(diào)用這個方法。

          Command模式的意圖是把請求封裝在對象中。

            --摘自《Java設(shè)計模式》第24章:Command(命令)模式

          二、Command模式的經(jīng)典應(yīng)用:

          Command模式的經(jīng)典應(yīng)用就是菜單命令。如何安排才能讓一個類在用戶單擊菜單的時候調(diào)用對應(yīng)的方法呢?解決的方法就是應(yīng)用多態(tài)性,具體做法如下:首先將操作的名稱固定,然后針對不同的類給出不同的實現(xiàn)。

            --摘自《Java設(shè)計模式》第24章:Command(命令)模式

          三、Command模式的簡單例子:

          參見http://www.jdon.com/designpatterns/command.htm

          四、Command模式的特點:

          ·有一個頂層的接口,用于表示“執(zhí)行命令”這個抽象動作,其次該方法中往往會含有用于區(qū)分請求類型的形參
          ·有一至多個實現(xiàn)類,每個實現(xiàn)類實現(xiàn)了接口中“執(zhí)行命令”這個抽象方法,提供具體的實現(xiàn)
          ·有一個用來裝載、保存命令執(zhí)行類的容器對象,負責加載、初始化、查找、調(diào)用內(nèi)部的各個命令對象

           
          五、Command調(diào)用的順序:

          ·初始化命令隊列,裝載各個命令對象(Command接口的實現(xiàn)類)
          ·接收事件/請求,將其作為參數(shù)傳遞給命令隊列
          ·命令隊列在自己內(nèi)部查找合適的處理者,調(diào)用接口實現(xiàn)方法處理請求

          六、Command模式和其它模式的結(jié)合:

          ·Command模式和Memento模式結(jié)合,實現(xiàn)“撤銷”操作:
             這一點需要和“備忘錄模式”配合,每執(zhí)行一個操作之前,先保存當前的狀態(tài)

          ·Command模式和Observer模式結(jié)合,實現(xiàn)“監(jiān)聽-觸發(fā)”流程:
             在GUI界面中,注冊一個監(jiān)聽器(Observer),監(jiān)聽各個組件(Observable),當被監(jiān)聽組件的被激活時,向監(jiān)聽器傳遞一個信息,監(jiān)聽器接收信息,作為參數(shù)傳遞給命令隊列。命令隊列根據(jù)參數(shù)查找,執(zhí)行命令。


          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2008-04-07 15:13 Paul Lin 閱讀(3477) 評論(0)  編輯  收藏 所屬分類: 模式與重構(gòu)
          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 淮南市| 桐城市| 邵东县| 元江| 遂平县| 买车| 湖北省| 绥江县| 逊克县| 浦东新区| 贞丰县| 南川市| 镇康县| 桃江县| 从江县| 铅山县| 和林格尔县| 南部县| 上思县| 临高县| 沭阳县| 镇沅| 紫金县| 荣成市| 静海县| 汝州市| 龙江县| 枝江市| 洪洞县| 张家界市| 伊金霍洛旗| 吉林省| 乐平市| 临夏县| 五寨县| 嘉荫县| 南汇区| 新乡县| 青州市| 淳安县| 丰县|