記得在當時學習uml老是很差分清聚合與組合的關係,找工做時特意複習了這塊的內容,結果正巧被面試官問道,這兩天又在搞這塊的內容,對聚合與組合有了更清楚的瞭解:
聚合:表示兩個對象之間是總體和部分的弱關係,部分的生命週期能夠超越總體。如電腦和鼠標,就能夠用一下圖形表示:
面試
組合:表示兩個對象之間是總體和部分的
強關係,部分的生命週期不能超越總體,或者說不能脫離總體而存在。組合關係的「部分」,是不能在總體之間進行共享的。如人和眼睛的關係:
不過,若是你要說,眼睛能夠移植,是否是說能夠脫離人而存在,它們就不是組合關係了?其實,UML中對象的關係都是在相應的軟件環境或實際場景下定義的,這裏區別聚合和組合的關係,關鍵仍是在於它們之中總體和部分的關係強、弱,以及它們之間的依附關係。若是剛纔說眼睛能夠移植給別人,那你也能夠把它認爲是聚合,這都要結合實際場景來講明。
另外兩個比較重要的關係是關聯和依賴:
關聯:簡單的能夠認爲,若是一個類做爲了另一個類的屬性,那必定是關聯關係。但你要知道,
聚合是一種特殊的關聯,而組合又是一種特殊的聚合。通常的關聯咱們認爲是平級的、無總體部分關係的,如朋友關係。 依賴:對象之間的臨時關係,臨時性體如今不超越方法的週期。簡單的說,在方法使用到的,如參數類,就必定是依賴關係。 最後想說一句,實際工做中,我並無發現區分這四種關係有多麼大的用處,也許本身尚未碰到,只是以爲可能每一個學習它的同窗總想把它搞清楚,但實際工做中做用並不明顯。