Java中类的关系可分为五种:继承、依赖、关联、聚合、组合。
本文我们主要是来分析聚合和组合。
聚合 (aggregation)
聚合是关联关系的一种特例,聚合关系中两个类的地位是不平等的,它体现的是整体与部分、拥有的关系,即has-a的关系。
下图中,聚合的箭头及指向:带空心菱形的实心线,菱形指向整体
class Family{
private List<Children> children; // 一个家里有许多孩子
}
在聚合关系中,b类是a类的一部分,是一种has-a的关系,即a has-a b,比如在上一段代码中,一个家里有许多孩子。
但是,has 不是 must has,a可以有b,也可以没有。a是整体,b是部分,整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整