我最近花了很多时间对我编写的各种 SW 组件进行详细的 UML 设计。回顾我最近完成的内容并将其与我第一次学习 UML 时进行比较,我发现我现在几乎严格使用聚合和组合关系,并且实际上已经放弃了“普通”的非定向/定向关系。当然,我仍然使用泛化和实现,但这些与上面的明显不同,不被认为是这个问题的一部分。
在我看来,聚合/组合意味着“香草”关联的相同含义,等等。聚合和组合自然暗示了一个方向,任何现代 UML 程序仍然允许您在聚合/组合关系上定义多重性,并将动词应用于关系。在那一点上,我认为香草联想没有什么意义。
我知道有些人很难理解聚合和组合之间的区别。早期,我有点难以理解它们的不同之处,我相信混乱是我使用香草联想的部分原因。我现在看到很少或根本没有使用香草关联,实际上不喜欢看到它们被使用,因为我相信它们会留下一些问题(特别是两个对象之间的强或弱生命周期关系)。我相信香草关联的唯一实际用途是当您对手头问题的理解尚未发展到足以确定聚合和组合之间的生命周期差异时。在这种情况下,最好至少显示当你对手头的问题有了更好的理解时,你可以回来并适当地改变它。
长话短说,我相信绝大多数时候人们使用香草联想,它们可以更准确地描述为聚合,有时也可以描述为组合。我的信仰是否大错特错?我错过了什么吗?让我听听!