Java中的关联与聚合与组合

时间:2013-02-12 17:03:40

标签: java oop

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

聚合:Facebook 用户

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

协会:人员使用浏览器

但我对使用我的例子感到困惑。为什么不能用户使用 Facebook帐户或Facebook 使用会话来验证用户?

OOP方面有错吗?我错过了哪个概念?

3 个答案:

答案 0 :(得分:8)

使用关系意味着两件事

- >两者都可以独立存在

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

关系意味着两件事

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

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

答案 1 :(得分:2)

This article from the Code Project对主题进行了简洁的解释。

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

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

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

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

我不确定你在Session课程中提到了什么。如果是the period of time while the user is connecte d,说Facebook使用会话进行身份验证没有任何意义,可能UserSession之间的联合关系可能是 agregation ,因为用户可以在一天内拥有多个会话,而且它们都是所有会话的所有者。

答案 2 :(得分:1)

检查精确讨论聚合VS合成的this wikipedia entry

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

相关问题