协会与聚合与Java中的组成(Association vs. Aggregation vs. Com

2019-07-19 18:35发布

我试图了解这些术语的含义。 和我带着像几个例子:

聚集:Facebook 拥有用户

组成:在Facebook的每个用户都有一个会话。

协会:人们使用浏览器

但是我却越来越困惑与拥有使用我的一个例子。 为什么不能是用户使用Facebook账户或Facebook 使用会话验证用户?

那是错误的OOP的方面? 当我错过什么概念?

Answer 1:

用途的关系意味着两件事

- >既可以独立存在

- >数据从整个分类器( )至部分分类器( 浏览器 )流

有关系意味着两件事

- >部分分类( 会话 )的寿命依赖于整个分类器的寿命(Facebook)的

- >数据通常仅在一个方向流动(即,从整个分类器(Facebook)的所述部分分类器( 会话 ))。



Answer 2:

这从代码项目的文章 ,使对象的一个整洁的解释。

首先,有没有石头书面方式域模型,有几种方法,是正确的建模方法对具体问题。 例如,您最初的例子使用了Facebook类,并在您的后续你现在使用Facebook Account类型:使用一种或另一种(或两者可能)的影响未模型,但并不能否定它。

话说,根据代码项目网站的关联关系意味着:

  • 老板:没有业主
  • 使用寿命:有自己的生命周期
  • 子对象:子对象的所有是独立的。

考虑到这一点,我不认为有之间的关联关系, UserFacebook Account ,因为他们是彼此高度依赖(假定用户是指Facebook的用户),这样的组合物可能是一个更好的关系。

我不知道什么是你与你的闯民宅Session类。 如果它的时间周期,而用户是connecte d有在说Facebook的使用会话进行身份验证,也许之间的asociation关系没有意义的UserSession可以是agregation,因为用户可以在一天内有几个会话的它的所有这些的所有者。



Answer 3:

检查这个维基百科条目说正是讨论聚集VS组成

因此,在Java方面,Facebook的用户有一个名字(组成)和Facebook的用户有好友列表(聚合)



文章来源: Association vs. Aggregation vs. Composition in Java
标签: java oop