<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    UML中關(guān)聯(lián)(Association)和依賴(Dependency)的區(qū)別

    原文轉(zhuǎn)自:http://blog.csdn.net/metasearch/article/details/2334853

     在UMLCHINA精華區(qū),看到了一些關(guān)聯(lián)和依賴的討論,似乎越講越糊涂.我想談一點(diǎn)自己的看法:
    1、在《UML參考手冊(cè)》第37頁(yè)中,指出“關(guān)聯(lián)和泛化都是依賴關(guān)系,但是它們有更特別的語(yǔ)義,故它們有自己的名字和詳細(xì)的語(yǔ)義。我們通常用依賴這個(gè)詞來(lái)指其他的關(guān)系。”
    2、在《UML參考手冊(cè)》30頁(yè)中,定義了關(guān)聯(lián)為“關(guān)聯(lián)描述了系統(tǒng)中對(duì)象或?qū)嵗g的離散連接。最普通的關(guān)聯(lián)是一對(duì)類元之間的二元關(guān)聯(lián)。關(guān)聯(lián)的實(shí)例之一是鏈。”
    3、接著,又說(shuō)明了“關(guān)聯(lián)關(guān)系是整個(gè)系統(tǒng)中使用的“膠粘劑”,如果沒(méi)有它,那么只剩下不能一起工作的孤立的類。”

    根據(jù)這三點(diǎn)引用,我們就可以知道關(guān)聯(lián)是類之間的“靜態(tài)”關(guān)系,只有通過(guò)這個(gè)關(guān)系的導(dǎo)航,一個(gè)對(duì)象才能找到另一個(gè)對(duì)象。它就象我們手中的通信錄,取得其他對(duì)象的聯(lián)系方法。除了這個(gè)職責(zé)之外,關(guān)聯(lián)沒(méi)有進(jìn)一步的意義了。這時(shí)有人可能會(huì)問(wèn),我們總該用關(guān)聯(lián)(通信錄)為程序做點(diǎn)什么呀!不好意思,關(guān)聯(lián)除了能找到對(duì)方之外,別的什么都不懂了。因此,一般來(lái)說(shuō),關(guān)聯(lián)是用語(yǔ)言機(jī)制中的指針來(lái)實(shí)現(xiàn),可以在程序初始或運(yùn)行是建立。當(dāng)然,也可以用任何標(biāo)識(shí)對(duì)象,并能在運(yùn)行中定位對(duì)象的機(jī)制來(lái)實(shí)現(xiàn)。
    依賴關(guān)系,簡(jiǎn)單地來(lái)說(shuō)就是“動(dòng)態(tài)”的關(guān)系,提供者可能要求或指示依賴關(guān)系中客戶的變化,依賴者為了達(dá)成要求被依賴對(duì)象行動(dòng)的目的,依賴首先要取得對(duì)方的引用,以便于實(shí)施這個(gè)依賴操作,對(duì)方對(duì)象的引用可以通過(guò)二種方法獲得,一種是依賴對(duì)象之間也存在關(guān)聯(lián)關(guān)系,所以它可以直接通過(guò)自己的關(guān)聯(lián)找到對(duì)方對(duì)象的引用,第二種是依賴對(duì)象之間不存在直接關(guān)聯(lián)關(guān)系,程序設(shè)計(jì)者有責(zé)任設(shè)計(jì)通過(guò)第三方對(duì)象的關(guān)聯(lián),經(jīng)過(guò)一次或多次的關(guān)聯(lián)導(dǎo)航獲得目標(biāo)對(duì)象的引用。最后,依賴對(duì)象通過(guò)這二種的任一種方法獲得目標(biāo)對(duì)象引用后,就可以向目標(biāo)對(duì)象施加相應(yīng)的依賴關(guān)系行為
    根據(jù)上述的分析,可以簡(jiǎn)單地作一個(gè)推論,僅對(duì)于這兩個(gè)關(guān)系來(lái)說(shuō),對(duì)象之間存在四種關(guān)系:
    1、無(wú)關(guān)聯(lián),無(wú)依賴
    它們是無(wú)關(guān)的對(duì)象類。
    2、有關(guān)聯(lián),無(wú)依賴
    一般用來(lái)為其它對(duì)象類導(dǎo)航到關(guān)聯(lián)端對(duì)象的橋梁。關(guān)聯(lián)對(duì)象之間除了相互存儲(chǔ)引用外,沒(méi)有進(jìn)一步的行為。也許,關(guān)聯(lián)引用在程序中沒(méi)有導(dǎo)航經(jīng)過(guò),這樣的話,可以取消關(guān)聯(lián)關(guān)系,就變成了(1)的情況。
    3、無(wú)關(guān)聯(lián),有依賴
    這是我們常常希望實(shí)現(xiàn)的松耦合關(guān)系的情景,對(duì)象之間沒(méi)有直接的關(guān)聯(lián)關(guān)系存在,所以它們沒(méi)有直接存儲(chǔ)對(duì)方的引用,使程序的可以更靈活地變動(dòng)。但是為了獲得對(duì) 象的引用以便實(shí)施依賴行為,比如調(diào)用,發(fā)消息,訪問(wèn)等依賴操作,可以通過(guò)間接關(guān)聯(lián)來(lái)定位對(duì)方。一般情況下,設(shè)計(jì)者會(huì)為依賴關(guān)系提供一個(gè)存取方法,獲取對(duì)象 引用。如果間接關(guān)聯(lián)無(wú)法到達(dá)彼此對(duì)方,那么這個(gè)依賴是不可實(shí)現(xiàn)的,這種“偽依賴”要么是程序設(shè)計(jì)的邏輯錯(cuò)誤(關(guān)系至少出現(xiàn)一個(gè)對(duì)象),要么是正常的 NULL對(duì)象(關(guān)系允許0個(gè)對(duì)象出現(xiàn))。
    4、有關(guān)聯(lián),有依賴
    當(dāng)然,這是最簡(jiǎn)單,也是最直接的實(shí)現(xiàn)了,它的意思也表達(dá)的最清楚。依賴的實(shí)施直接通過(guò)本身的關(guān)聯(lián)引用進(jìn)行。這時(shí),對(duì)象間的耦合關(guān)系確實(shí)比較強(qiáng)了,看需要是否解耦或不變。
    ============================================================================
    對(duì)類而言依賴存在的理由有:B作為一個(gè)參數(shù)被傳遞給A眾所定義的一個(gè)方法(參數(shù)可見(jiàn)性);B在A的一個(gè)方法眾被聲明未局部對(duì)象(局部聲明可見(jiàn)性);B對(duì)A全局可見(jiàn)(全局可見(jiàn)性)
    而關(guān)聯(lián)一般應(yīng)來(lái)描述普通的屬性可見(jiàn)性(B是A的一個(gè)屬性, 是一種相對(duì)長(zhǎng)久的可見(jiàn)性, 是普遍存在的,)
    ==============================================================================
    依賴一般的表現(xiàn)方法是方法的局部變量,或者是方法內(nèi)對(duì)靜態(tài)方法的引用!
    關(guān)聯(lián)一般的表現(xiàn)方法是對(duì)象的全局變量!
    依賴:
      class   A  {   
            void   methodA()   
            {   
                    B   b   =   new   B();   
                    b.methodB();     
            }   
      } 

    關(guān)聯(lián):

     class A {   
            B   b   =   new   B();   
            void   methodA()   
            {   
                  b.methodB();   
            }   
      } 


    Kyle Wang

    posted on 2012-10-30 23:08 王樹(shù)東 閱讀(3537) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    常用鏈接

    留言簿

    隨筆分類(17)

    隨筆檔案(15)

    文章分類(4)

    文章檔案(5)

    收藏夾(4)

    Algorithm

    Design

    Environment Setup

    Installer

    Maven

    MINA

    OS

    Skills for Java

    VIM

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲午夜福利在线视频| 国产亚洲一区二区三区在线观看| 91精品国产亚洲爽啪在线影院| 好猛好深好爽好硬免费视频| 4338×亚洲全国最大色成网站| 老司机午夜免费视频| 高清在线亚洲精品国产二区| 国产亚洲综合一区二区三区| 亚洲精品高清在线| 国产在线播放线91免费| 亚洲国产精品无码久久一区二区| 免费黄色电影在线观看| 亚洲色av性色在线观无码| 国产精品无码免费播放| 久久精品熟女亚洲av麻豆| 亚洲一区二区三区乱码A| 热99RE久久精品这里都是精品免费 | 亚洲视频中文字幕| 18禁免费无码无遮挡不卡网站| 亚洲永久在线观看| vvvv99日韩精品亚洲| a级黄色毛片免费播放视频| 亚洲综合视频在线| 成人免费午夜视频| 日韩在线观看免费| 亚洲av不卡一区二区三区| 亚洲免费视频观看| 青青青亚洲精品国产| 亚洲乱码一区二区三区在线观看| 99精品视频在线免费观看| 亚洲中文字幕无码av| 亚洲色一色噜一噜噜噜| 永久黄色免费网站| 亚洲AV无码国产精品永久一区| 久久久久亚洲AV综合波多野结衣 | 中国精品一级毛片免费播放| 亚洲精品日韩中文字幕久久久| 韩国18福利视频免费观看| 永久免费不卡在线观看黄网站| 亚洲大成色www永久网址| 亚洲中文字幕无码不卡电影|