关联和依赖的区别
最近研究設(shè)計模式,看類圖有點發(fā)虛!有些關(guān)系搞的不是很清楚。所以整理一下:
? 類與類之間由弱到強(qiáng)關(guān)系是: ? ?沒關(guān)系 >?依賴 >?關(guān)聯(lián) > 聚合 > 組合。
?類和類之間八竿子打不著那就是沒關(guān)系,這個沒啥歧義。
? ??
依賴(dependency)
?
可以簡單的理解,就是一個類A使用到了另一個類B,而這種使用關(guān)系是具有偶然性的、、臨時性的、非常弱的,但是B類的變化會影響到A;比如某人要過河,需要借用一條船,此時人與船之間的關(guān)系就是依賴;表現(xiàn)在代碼層面,為類B作為參數(shù)被類A在某個method方法中使用。用帶虛線的箭頭。
?
關(guān)聯(lián)(association)
他體現(xiàn)的是兩個類、或者類與接口之間語義級別的一種強(qiáng)依賴關(guān)系,比如我和我的朋友;這種關(guān)系比依賴更強(qiáng)、不存在依賴關(guān)系的偶然性、關(guān)系也不是臨時性的,一般是長期性的,而且雙方的關(guān)系一般是平等的、關(guān)聯(lián)可以是單向、雙向的;表現(xiàn)在代碼層面,為被關(guān)聯(lián)類B以類屬性的形式出現(xiàn)在關(guān)聯(lián)類A中,也可能是關(guān)聯(lián)類A引用了一個類型為被關(guān)聯(lián)類B的全局變量;
?
?依賴和關(guān)聯(lián)區(qū)別:我用錘子修了一下桌子,我和錘子之間就是一種依賴,我和我的同事就是一種關(guān)聯(lián)。依賴是一種弱關(guān)聯(lián),只要一個類用到另一個類,但是和另一個類的關(guān)系不是太明顯的時候(可以說是“uses”了那個類),就可以把這種關(guān)系看成是依賴,依賴也可說是一種偶然的關(guān)系,而不是必然的關(guān)系。關(guān)聯(lián)是類之間的一種關(guān)系,例如老師教學(xué)生,老公和老婆這種關(guān)系是非常明顯的。依賴是比較陌生,關(guān)聯(lián)是我們已經(jīng)認(rèn)識熟悉了。
總結(jié)
- 上一篇: Failed to connect to
- 下一篇: 5种类型的程序员