少年阿賓

          那些青春的歲月

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
          基本概念:
                在軟件系統(tǒng)中,“行為請(qǐng)求者”與“行為實(shí)現(xiàn)者”通常呈現(xiàn)一種“緊耦合”。但在某些場(chǎng)合,比如要對(duì)行為進(jìn)行“記錄、撤銷(xiāo)/重做、事務(wù)”等處理,這種無(wú)法抵御變化的緊耦合是不合適的。在這種情況下,如何將“行為請(qǐng)求者”與“行為實(shí)現(xiàn)者”解耦?將一組行為抽象為對(duì)象實(shí)現(xiàn)二者之間的松耦合。這就是命令模式(Command Pattern)。

               將來(lái)自客戶(hù)端的請(qǐng)求傳入一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶(hù)進(jìn)行參數(shù)化。用于“行為請(qǐng)求者”與“行為實(shí)現(xiàn)者”解耦,可實(shí)現(xiàn)二者之間的松耦合,以便適應(yīng)變化。分離變化與不變的因素。

             在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,一個(gè)對(duì)象調(diào)用另一個(gè)對(duì)象,一般情況下的調(diào)用過(guò)程是:創(chuàng)建目標(biāo)對(duì)象實(shí)例;設(shè)置調(diào)用參數(shù);調(diào)用目標(biāo)對(duì)象的方法。

          但在有些情況下有必要使用一個(gè)專(zhuān)門(mén)的類(lèi)對(duì)這種調(diào)用過(guò)程加以封裝,我們把這種專(zhuān)門(mén)的類(lèi)稱(chēng)作command類(lèi)。


          特點(diǎn)
          1)、command模式將調(diào)用操作的對(duì)象和實(shí)現(xiàn)該操作的對(duì)象解耦
          2)、可以將多個(gè)命令裝配成一個(gè)復(fù)合命令,復(fù)合命令是Composite模式的一個(gè)實(shí)例
          3)、增加新的command很容易,無(wú)需改變已有的類(lèi)

          應(yīng)用場(chǎng)景:

          我們來(lái)分析下命令模式的使用場(chǎng)景吧,一般情況下如下幾類(lèi)場(chǎng)景中使用命令模式會(huì)達(dá)到很好的效果:

                1、當(dāng)一個(gè)應(yīng)用程序調(diào)用者與多個(gè)目標(biāo)對(duì)象之間存在調(diào)用關(guān)系時(shí),并且目標(biāo)對(duì)象之間的操作很類(lèi)似的時(shí)候。

                2、例如當(dāng)一個(gè)目標(biāo)對(duì)象內(nèi)部的方法調(diào)用太復(fù)雜,或者內(nèi)部的方法需要協(xié)作才能完成對(duì)象的某個(gè)特點(diǎn)操作時(shí)。

                3、有時(shí)候調(diào)用者調(diào)用目標(biāo)對(duì)象后,需要回調(diào)一些方法。

               命令模式是將行為請(qǐng)求者和行為實(shí)現(xiàn)者解耦合的方式。對(duì)命令進(jìn)行封裝,將命令和執(zhí)行命令分隔開(kāi)。請(qǐng)求的一方發(fā)出命令,要求執(zhí)行某些操作,接受一方收到命令,執(zhí)行這些操作的真正實(shí)現(xiàn)。請(qǐng)求的一方不必知道接受方的接口,以及如何被操作。 


              命令模式可以應(yīng)用到很多場(chǎng)景,比如實(shí)現(xiàn)do/undo功能、實(shí)現(xiàn)導(dǎo)航功能。

          posted on 2015-03-30 21:23 abin 閱讀(2159) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): PatternDesigns

          Feedback

          # re: 命令模式應(yīng)用場(chǎng)景[未登錄](méi) 2016-08-05 13:23 1
          32  回復(fù)  更多評(píng)論
            

          # re: 命令模式應(yīng)用場(chǎng)景[未登錄](méi) 2016-08-05 13:24 1
          訂單  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 安义县| 建德市| 安徽省| 萍乡市| 确山县| 晋城| 朝阳区| 江源县| 景谷| 苍山县| 佛山市| 岑溪市| 聂荣县| 桃园县| 交口县| 镇赉县| 康保县| 同心县| 宾川县| 阳新县| 老河口市| 河南省| 军事| 浏阳市| 介休市| 大悟县| 台北市| 莲花县| 江孜县| 洞头县| 凯里市| 台中市| 牡丹江市| 子洲县| 定兴县| 永春县| 定陶县| 内黄县| 綦江县| 会理县| 西安市|