簡體   English   中英

Java Has-A 關系、組合或聚合

[英]Java Has-A relationship, composition or aggregation

我在谷歌上搜索,我比以前更困惑。 Has-A 關系是組合還是聚合? 還是只是聚合,所以組合就像“Part-Of”? 或者我們只是說 Object "has-a" Other Object 意思是關系可以是組合或聚合。 你能解釋一下聚合和組合之間的區別嗎?

這段代碼

public class Tree{
     private Leaf leaf =  new Leaf();
}

不同於

public class Tree{
    private Leaf leaf;
    public Tree(Leaf leaf){
       this.leaf = leaf;
    }
}

所以,我確定第一個是組合,因為只有在創建樹時才存在葉子。 但是對於第二個示例,樹可能具有來自“外部”列表的葉子引用,如果我刪除(第二個示例)樹,葉子仍然存在。

所以我們可以說:

  • 組成是:當容器(樹)對象被“刪除”時,所包含的(葉)也被“刪除”
  • 聚合是:當容器(第二棵樹)對象被“刪除”時,所包含的(葉)不會被“刪除”

這是正確的嗎?

首先明確一件事 組合和聚合都屬於關聯的范疇。 意味着組合和聚合都是兩種類型的關聯。

當存在弱關聯時,則此聚合,或者當沒有部分整體關系時,意味着子項可以獨立於父項而存在。 關聯的示例是員工和銀行。 一個人可以是任何一家銀行的雇員,也可以更換銀行。 或者銀行可以在沒有員工的情況下存在。

當有很強的關聯時,這就是組合,或者當有一部分整體關系時,意味着孩子不能沒有父母而存在。 組合的例子是人類及其心臟。 心沒有人就不能獨立存在,人沒有心就不能獨立存在。 Has a ”關鍵字僅與組合一起存在,因為在組合中一個包含另一個對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM