Java中的关联与聚合与组合

我试图理解这些术语的含义。 我带来了几个例子:

聚合:Facebook 有一个用户

组成:facebook 中的每个用户都有一个会话。

协会:人们使用浏览器

但是我很困惑,并且使用了例子。 为什么不能用户使用 Facebook帐户或Facebook 使用会话来validation用户?

在OOP方面是错误的吗? 我错过了什么概念?

使用关系意味着两件事

– >两者都可以独立存在

– >数据从整个分类器( )流向零件分类浏览器

关系意味着两件事

– >零件分类器( 会话 )的生命周期取决于整个分类器的生命周期( facebook

– >数据通常仅在一个方向上流动(即,从整个分类器( facebook )到部分分类器( 会话 ))。

代码项目中的这篇文章对主题进行了简洁的解释。

首先,没有用石头书写方式来建模域,有几种方法可以解决特定问题的正确建模方法。 例如,您的初始示例使用Facebook类,并且在您的后续行动中,您现在使用的是Facebook Account类型:使用一个或另一个(或两者)会影响您的模型,但不会使其无效。

据说,根据Code Project网站, 关联关系意味着:

  • 所有者:没有所有者
  • 终身:有自己的一生
  • 子对象:子对象都是独立的。

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

我不确定你在Session类中提到了什么。 如果是用户连接的时间段,则说Facebook使用会话进行身份validation没有任何意义,也许UserSession之间的关联关系可能是一个聚合 ,因为用户可以在一天内有多个会话,而不是所有人的所有者。

检查这个精确讨论聚合VS组合的维基百科条目

因此,在Java术语中,Facebook用户有一个名称(组合),Facebook用户有一个朋友列表(聚合)