我知道聚合和组合之间的概念差异.有人可以通过示例告诉我它们之间Java的实现差异吗?
最近我在求职面试时被问到这个问题,我无法回答.那么,java.io中最常用的模式是什么?它是如何使用的?常见的Java库中使用的其他模式有哪些?
我已经回顾了很多关于这些事情的信息,但是无法理解它们之间有什么区别?在Fowler的UML Distilled中说,Aggreagation绝对没有意义,因此作者建议不要在图表中使用它.请解释一下,何时我应该使用它们以及它将如何影响java代码.
在OOP中,组合(由UML中的填充菱形表示)与类之间的关联(由UML中的空菱形表示)之间的区别是什么.我有点困惑.什么是聚合?我能有一个令人信服的现实世界的例子吗?
我一直避免使用聚合,因为将一对多关系归类为聚合似乎太主观了。但我正在审查其他人制作的模型,其中聚合用于多对多关系(例如:一门课程由多个模块组成,一个模块可能是多个课程的一部分)。这在我看来是完全错误的,但我找不到一个明确的规则来反对它。官方有什么规定?
有多少书自相矛盾,让我抓狂。
Class A {} class B {void UseA(A a)} //some say this is an association,
no reference is held but communication is possible
Class A {} class B {A a;} //some say this is
aggregration, a reference is held
Run Code Online (Sandbox Code Playgroud)
但是很多人说持有引用仍然只是一个关联,并且为了聚合他们使用一个列表 - 恕我直言,这是一样的,它仍然是一个引用。
我很困惑,我想了解这个问题。
例如这里:http : //aviadezra.blogspot.cz/2009/05/uml-association-aggregation-composition.html - 强关联和聚合之间的区别是什么,在这两种情况下,作者都使用一个字段来存储引用。 .
另一个例子:这据说是关联:

这被称为聚合:

public class Professor {
// ...
}
public class Department {
private List<Professor> professorList;
// ..
}
Run Code Online (Sandbox Code Playgroud)
再次,有什么区别?它是两种情况下的参考
java ×4
uml ×4
aggregation ×3
oop ×3
associations ×2
composition ×2
diagramming ×1
io ×1
ooad ×1
relationship ×1