This question already has answers here:
Aggregation versus Composition [closed]
(12个答案)
7年前关闭。
我复习了很多有关这些东西的信息,但是不明白它们之间有什么区别?在Fowler的UML中,Distilled表示,严格意义上讲,aggreagation是毫无意义的,因此作者建议不要在图表中使用它。
请解释一下何时应该使用它们,以及它们将如何影响Java代码。
(12个答案)
7年前关闭。
我复习了很多有关这些东西的信息,但是不明白它们之间有什么区别?在Fowler的UML中,Distilled表示,严格意义上讲,aggreagation是毫无意义的,因此作者建议不要在图表中使用它。
请解释一下何时应该使用它们,以及它们将如何影响Java代码。
最佳答案
这是一个非常有争议的问题。作为Martin explains in the answer,订单汇总了产品。这可以认为是正确的。格雷迪·布奇(Grady Booch)在他的“面向对象的分析和设计”中提出了一个类似的关联示例-销售与该销售中的产品相关,反之亦然。销售不会汇总产品。因此,所有示例都应特定于域,因为从另一个角度看,关联可能变得更加特定。另一个示例是使用段落组成文档。
因此,该字段中的所有内容都强烈取决于上下文。这就是OOP。
您可以尝试将您的知识应用于要设计的特定项目。如果您还没有这样做,我建议您阅读Grady Booch的书。从那以后,已经写了很多书,但仍然是《 OO *》的圣经。