关联、聚合、组合的关系[转]
生活随笔
收集整理的這篇文章主要介紹了
关联、聚合、组合的关系[转]
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我想舉個通俗的例子。
你和你的心臟之間是composition關(guān)系
你和你買的書之間是aggregation關(guān)系
你和你的朋友之間是association關(guān)系
關(guān)聯(lián)和聚合的區(qū)別主要在語義上,關(guān)聯(lián)的兩個對象之間一般是平等的,例如你是我的朋友,聚合則一般不是平等的,例如一個公司包含了很多員工,其實現(xiàn)上是差不多的。聚合和組合的區(qū)別則在語義和實現(xiàn)上都有差別,組合的兩個對象之間其生命期有很大的關(guān)聯(lián),被組合的對象是在組合對象創(chuàng)建的同時或者創(chuàng)建之后創(chuàng)建,在組合對象銷毀之前銷毀。一般來說被組合對象不能脫離組合對象獨立存在,而且也只能屬于一個組合對象,例如一個文檔的版本,必須依賴于文檔的存在,也只能屬于一個文檔。聚合則不一樣,被聚合的對象可以屬于多個聚合對象,例如一個員工可能可以屬于多個公司 ? 看來大家對組合的理解沒有意義,因為他們直接有共同的lifetime ,
甚至,被component的對象是否能夠被其他類所見需要component 對象的同意。
association 代表引用服務(wù),但不會永久保存引用的入口,比如,僅僅是參數(shù)引用,用完就丟棄,是最弱連接。
aggregation 聚合代表永久引用或強引用,也許對象生成的時候就獲得了該引用。
雖然他們直接沒有生命期的約束。但是引用對象必須處理被引用對象義務(wù)消失的意外處理。 ? 在討論聚合,關(guān)聯(lián),組合區(qū)別,討論那么多內(nèi)部類干什么?
確實,他們的關(guān)系按強弱分有
關(guān)聯(lián)<聚合<組合
我看大家主要分岐在聚合和組合上。說白一點,聚合這種關(guān)系是被包含的對象的個數(shù)是 0..* 而組合是 1..*
聚合中的被包含對象可以沒有。 而組合至少有一個。聚合是一種擁有的關(guān)系,而組合是整體與部分的關(guān)系
舉一個簡單的例子:
一個圖書館可以有十萬本書,也可以一本也沒有。但空的圖書館還是圖書館。這是聚合
一個車(我們平常能看到的普通的交通工具車)有輪子,有的車是四輪子的,有的車是三輪的,自行車是二輪的,還有獨輪車,但車至少要有一個輪子,不然就不是車。這是組合關(guān)系。 轉(zhuǎn)自:http://blog.chinaunix.net/u/11794/showart.php?id=194473
你和你的心臟之間是composition關(guān)系
你和你買的書之間是aggregation關(guān)系
你和你的朋友之間是association關(guān)系
關(guān)聯(lián)和聚合的區(qū)別主要在語義上,關(guān)聯(lián)的兩個對象之間一般是平等的,例如你是我的朋友,聚合則一般不是平等的,例如一個公司包含了很多員工,其實現(xiàn)上是差不多的。聚合和組合的區(qū)別則在語義和實現(xiàn)上都有差別,組合的兩個對象之間其生命期有很大的關(guān)聯(lián),被組合的對象是在組合對象創(chuàng)建的同時或者創(chuàng)建之后創(chuàng)建,在組合對象銷毀之前銷毀。一般來說被組合對象不能脫離組合對象獨立存在,而且也只能屬于一個組合對象,例如一個文檔的版本,必須依賴于文檔的存在,也只能屬于一個文檔。聚合則不一樣,被聚合的對象可以屬于多個聚合對象,例如一個員工可能可以屬于多個公司 ? 看來大家對組合的理解沒有意義,因為他們直接有共同的lifetime ,
甚至,被component的對象是否能夠被其他類所見需要component 對象的同意。
association 代表引用服務(wù),但不會永久保存引用的入口,比如,僅僅是參數(shù)引用,用完就丟棄,是最弱連接。
aggregation 聚合代表永久引用或強引用,也許對象生成的時候就獲得了該引用。
雖然他們直接沒有生命期的約束。但是引用對象必須處理被引用對象義務(wù)消失的意外處理。 ? 在討論聚合,關(guān)聯(lián),組合區(qū)別,討論那么多內(nèi)部類干什么?
確實,他們的關(guān)系按強弱分有
關(guān)聯(lián)<聚合<組合
我看大家主要分岐在聚合和組合上。說白一點,聚合這種關(guān)系是被包含的對象的個數(shù)是 0..* 而組合是 1..*
聚合中的被包含對象可以沒有。 而組合至少有一個。聚合是一種擁有的關(guān)系,而組合是整體與部分的關(guān)系
舉一個簡單的例子:
一個圖書館可以有十萬本書,也可以一本也沒有。但空的圖書館還是圖書館。這是聚合
一個車(我們平常能看到的普通的交通工具車)有輪子,有的車是四輪子的,有的車是三輪的,自行車是二輪的,還有獨輪車,但車至少要有一個輪子,不然就不是車。這是組合關(guān)系。 轉(zhuǎn)自:http://blog.chinaunix.net/u/11794/showart.php?id=194473
轉(zhuǎn)載于:https://www.cnblogs.com/zany-hui/articles/1029873.html
總結(jié)
以上是生活随笔為你收集整理的关联、聚合、组合的关系[转]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。