我试图了解这些术语的含义。我带来了几个例子:
聚合:Facebook 有用户
组成:Facebook 中的每个用户都有一个会话。
协会:人员使用浏览器
但我对有和使用我的例子感到困惑。为什么不能用户使用 Facebook帐户或Facebook 使用会话来验证用户?
OOP方面有错吗?我错过了哪个概念?
答案 0 :(得分:8)
使用关系意味着两件事
- >两者都可以独立存在
- >数据从整个分类器(人)流向零件分类器(浏览器)
有关系意味着两件事
- >零件分类器的生命周期(会话)取决于整个分类器的生命周期( facebook )
- >数据通常仅在一个方向上流动(即,从整个分类器( facebook )流向零件分类器(会话))。
答案 1 :(得分:2)
This article from the Code Project对主题进行了简洁的解释。
首先,没有一种以石头书写的方式来建模一个域,有几种方法可以解决特定问题的正确建模方法。例如,您的初始示例使用的是Facebook
类,并且在您的后续行动中,您现在使用的是Facebook Account
类型:使用一个或另一个(或两者兼有)会影响您的模型,但不会t使它无效。
根据代码项目网站的说法,关联关系意味着:
考虑到这一点,我不认为User
和Facebook Account
之间存在关联关系,因为它们彼此高度依赖(假设用户指的是Facebook用户),所以构成可能是一种更好的关系。
我不确定你在Session
课程中提到了什么。如果是the period of time while the user is connecte d,说Facebook使用会话进行身份验证没有任何意义,可能User
和Session
之间的联合关系可能是 agregation ,因为用户可以在一天内拥有多个会话,而且它们都是所有会话的所有者。
答案 2 :(得分:1)
检查精确讨论聚合VS合成的this wikipedia entry
因此,在Java术语中,Facebook用户有一个名字(组成),Facebook用户有一个朋友列表(聚合)