UML依賴,關聯,組合,聚合,繼承,實現的關係

    這幾天在看netty的源碼想根據源碼把netty的UML架構圖跟時序圖畫出來,因此就複習了一下大學時代的一些UML基礎知識,首先,咱們要搞清楚如下幾個概念:java


  • 繼承:這個就不要多說了,寫過java代碼的人通常都很容易理解繼承這個概念。網絡

  • 實現:這個可能有些初學者有些模糊,由於你們通常會認爲實現跟繼承是同樣的概念,在java裏面 繼承使用的關鍵字是extends而實現使用的關鍵字是implements。說到這裏我想你們都明白了吧。架構

  • 依賴:在理解這個概念以前咱們先去百度百科裏面看一下依賴的中文解釋:依靠別人或事物而不能自立或自給。俗稱成癮。spa

  • 關聯:咱們同樣去百度百科裏面找一下關聯的概念:把兩個或兩個以上在乎義上有密切聯繫的句子組合在一塊兒,叫複句,也叫關聯句。netty

  • 組合:組合,漢語詞語,既能夠做爲名詞又能夠做爲動詞使用。做爲名詞,指由幾個部分或個體結合成的總體;做爲動詞,是指組織成總體。orm

  • 聚合:聚合,指分散的彙集到一塊兒。在化學中它指有機化學和高分子化學的重要術語。在網絡用語中指對互聯網各類信息的集合。blog


以上關於繼承跟實現可能你們理解起來比較簡單一點,那麼咱們如何理解依賴,關聯,組合,聚合的關係呢?繼承

首先,從語義上理解:生命週期

  • 依賴須要的功能本身不能實現須要從外部引進相關類來完成相關功能,具體實現方式在:方法局部變量, 方法中的參數, 和對靜態方法的調用。另外,依賴關係老是單向的。get

關聯關注的是密切聯繫,而依賴沒有這個特色,所以關聯通常是長期的且雙方關係是平等的,具體的實現方式表如今:類全局變量的形式出現,而且關聯能夠是雙向的。組合,從字面上理解是關聯關係的一種,不過他更強調的是組合後的總體,即幾個組件組合以後跟總體是不可分割的,如何建立,生命週期等都有總體來控制不受外界的干擾:具體表如今:類全局變量的形式出現,可是這個全局變量的建立不禁外部決定。聚合指的是本來分散的東西彙集到一塊兒,就是說東西本來就是存在的,只是經過一個組件把各個組件彙集到一塊兒,而新的組件不負責其餘組件的建立生命週期等的管理。另外,聚合也是關聯的一種,從字面上理解關聯更強調的是把密切聯繫,而聚合可能不太注重那一點:聚合具體表如今:方法中的參數。


所以總的來講關聯,依賴,組合,聚合,這幾種關係所表現的強弱程度依次爲:組合>聚合>關聯>依賴




本文出自 「陳硯羲」 博客,請務必保留此出處http://chenyanxi.blog.51cto.com/4599355/1531253

相關文章
相關標籤/搜索