我试图理解这些术语的含义。我举了几个例子,比如:
聚合:Facebook有一个用户
组成: facebook 中的每个用户都有一个会话。
协会:人们使用浏览器
但我对has a和使用我的一个例子感到困惑。为什么不能是用户使用facebook 帐户或 Facebook使用会话来验证用户?
就OOP而言这是错误的吗?我在哪里错过了这个概念?
使用关系意味着两件事
->两者都可以独立存在
->数据从整个分类器(人)流向部分分类器(浏览器)
有关系意味着两件事
-> 部分分类器(会话)的生命周期取决于整个分类器(facebook)的生命周期
-> 数据通常只流向一个方向(即从整个分类器(facebook)到部分分类器(session))。
代码项目中的这篇文章对主题进行了简洁的解释。
首先,没有一成不变的方式来对域进行建模,有几种方法是针对特定问题的正确建模方法。例如,您的初始示例使用了一个Facebook
类,而在您的后续操作中,您现在正在使用一种Facebook Account
类型:使用一个或另一个(或两者)会对您的模型产生影响,但不会使其无效。
说,根据代码项目网站,关联关系意味着:
考虑到这一点,我认为 和 之间没有关联关系User
,Facebook Account
因为它们彼此高度依赖(假设 User 指的是 Facebook 用户),因此组合可能是更好的关系。
我不确定您在Session
课堂上指的是什么。如果这是用户连接的时间段,User
那么说 Facebook 使用 session 进行身份验证是没有意义的,也许和之间的关联关系Session
可以是agregation,因为 User 可以在一天内拥有多个 Session 并且它是他们都是。
检查这个精确讨论聚合VS组合的维基百科条目
因此,用 Java 术语来说,Facebook 用户有一个名字(组成),而一个 Facebook 用户有一个朋友列表(聚合)