我很難理解這些涉及到設計一個類圖的情況,從我所知道的構成是一個「有一個」關係但聚合?我不知道它是什麼。還有一件事我什麼時候才能知道在類圖中使用Composition?什麼時候才能知道在類圖中使用Aggregation?一個例子將高度讚賞。類圖中的組合和聚合
5
A
回答
21
聚合和組合之間的主要區別在於「有-a」關係的屬性。它「強大或弱小」。
聚合「有-α」關係是「弱類型」。弱意味着聚合器的鏈接組件可能在聚合生命週期中存活,或者可能以其他方式訪問。一個簡單的例子就是擁有會員的足球俱樂部。如果俱樂部得到了解決,你仍然得到了成員 - 實際上也可能是其他俱樂部的成員,因此保持活力。
構成「具有」的關係是「強類型」。強烈的意義,一個人不能存在而另一個不存在。組件的生命週期直接與「父」關聯。一個例子就是有房的房子。如果你決定把房子拆掉,你也會失去你的房間。
也許有點抽象,但我認爲這是它背後的想法。
0
個人我不使用聚合。語義太弱而無用。它會導致比解決問題更多的問題。只有一個地方,它具有明確定義和潛在有用的屬性,可以將它與簡單的二元關聯區分開來(請參閱腳註)。
組合可能很有用,因爲它定義了關於不變性和生命週期管理的重要屬性(請參閱上面的第一個鏈接)。我很幸福地活了很多年,不需要使用Aggregation。
hth。
腳註。如果需要對遞歸樹關係進行建模,則可以應用聚合。一部分遞歸地分解成子部分。聚合說,不存在循環關係,即一個部分不能直接或間接地成爲其自身的子部分。然而,大多數人閱讀模型不太可能知道這一點。所以你需要添加評論。這意味着你應該堅持二元關聯,避免使用聚合的困惑。
相關問題
- 1. 類圖中的聚合和組合關係
- 2. 使用類圖在java中的聚合和組合實現
- 3. Mongodb中的聚合和組
- 4. 在C#中實現組合和聚合?
- 5. 類定義中的聚合和組合表示?
- 6. 聚合在類圖和類屬性
- 7. UML圖幫助(聚合/組合)
- 8. Mongodb中聚合的聚合
- 9. visual studio 2012 - 類圖和聚合
- 10. 羣組和聚合問題
- 11. 關聯,聚集和組合
- 12. 組和聚合與LINQ
- 13. mongodb聚合,組和排序
- 14. SQL聚合組
- 15. 聚合組
- 16. 類圖中的聚合關係?
- 17. Postgresql聚合和非聚合列的使用情況,分組
- 18. 聚合MongoDB結果組合
- 19. Mongoose,mongodb,壞聚合組合
- 20. 如何在Visual Studio類圖中可視化聚合,組合作圖
- 21. 構圖,聚合和DI
- 22. SQL中的聯合和聚合
- 23. 聚合和聚合根困惑
- 24. 聚合聚合(ARRAY_AGG)?
- 25. mongoDB - 聚合上的聚合?
- 26. MongoDB聚合:組合兩個數組
- 27. Python 3 - 在字典和聚合中創建列表的組合
- 28. 將關聯,聚合和組合轉換爲java中的代碼?
- 29. 如何處理RESTful Web服務中的聚合和組合
- 30. MongoDB中的聚合框架結合小組和項目
我忘了問,關聯怎麼樣? – user962206