<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精品国产亚洲爽啪在线影院 | 全部免费毛片在线播放| 亚洲综合欧美色五月俺也去| 亚洲第一福利网站在线观看| 无码人妻AV免费一区二区三区| 亚洲日韩国产欧美一区二区三区 | 亚洲欧洲日本在线观看| 婷婷综合缴情亚洲狠狠尤物| 久久久久久一品道精品免费看| 亚洲熟女精品中文字幕| 国产亚洲精品自在久久| 全免费a级毛片免费看不卡| 国产三级在线免费| 成人精品国产亚洲欧洲| 亚洲美女视频一区二区三区| 亚洲av无码专区在线观看素人| 亚洲免费电影网站| 99免费在线视频| 精品国产亚洲AV麻豆 | 中日韩亚洲人成无码网站| 亚洲人精品午夜射精日韩| 日本免费观看网站| 我们的2018在线观看免费高清| 一级女人18片毛片免费视频 | 久久永久免费人妻精品下载| 视频一区二区三区免费观看| 亚洲国产精品免费在线观看| 亚洲日韩中文无码久久| 免费在线观看亚洲| 无码中文字幕av免费放| 3d动漫精品啪啪一区二区免费| fc2成年免费共享视频18| 亚洲丁香婷婷综合久久| 亚洲在成人网在线看| 亚洲AV美女一区二区三区| 久久激情亚洲精品无码?V| 国产一区视频在线免费观看| 黄瓜视频高清在线看免费下载|