对象集合、对象聚合、对象关联和对象组合之间有什么区别



我看到这些术语被使用,我认为我自己对它们的使用可能不正确。我想知道它们到底有什么不同。

对象集合-???

对象聚合-???

对象关联-???

对象组合-???

最近,当谈到ORM、数据映射器和存储库时,似乎出现了这些术语。例如,Fowler在这里提到了对象集合。这些术语的具体含义是什么?我应该如何在演讲中有效地使用它们?

对象集合

是一个比"数组"更宽泛的术语,但包括"数组"。集合本身就是对象,其主要目标是存储其他几个对象,以及取决于每种集合类型的其他功能,如插入顺序或提取顺序(如果允许重复项目),等等

对象关联

也是一个非常通用的术语,它意味着两个对象之间存在概念关系。还有几种"协会",有更具体的目标。

对象聚合

是一个对象关联,其中一个对象与另一个对象相关。它们可以独立存在,其中一个的创建或销毁不会影响另一个,尽管有些操作是两个对象交互的结果。

对象组成

是一个对象关联,其中一个对象是另一个主对象的一部分。子对象不能独立存在,通常是创建或销毁的,由主对象管理。

注意:

注:Object AggregationObject CompositionObject Association的一种,但它们并不是唯一的。

添加到umlcat的答案中,并举例说明:

(正如本文中提到的)
示例1:公司是人的集合体。公司是账户的组成部分。当一家公司停止营业时,其账户不复存在,但其人员继续存在。
示例2:文本编辑器拥有一个缓冲区(合成)。文本编辑器使用文件(聚合)。当文本编辑器关闭时,缓冲区将被销毁,但文件本身不会被销毁。

此外,我想说的是,值得注意的是,如果你不关心他们是否独立于公司存在,那么人们可能会被转移到公司内部严格使用(现在组成)。(这意味着你的应用程序只允许在公司上下文中创建人员。不过,我不认为PHP允许你在类中定义类。你最终只需要查看应用程序中的不同使用领域,就可以确定你是在使用组合还是聚合。)

相关内容

  • 没有找到相关文章

最新更新