association 关联:
aggregation 聚合:一个对象成为另一个对象的组成部分 “has a”
composition 组合:一个对象管理另一个对象的生命周期
依赖:人开车回家 人用斧头砍柴 人和车,斧头之间就是依赖关系 也就有了依赖注入
cohesion/coupling内聚 与耦合
聚合
聚合是一种特别类型的关联,用于描述“总体到局部”的关系。
在基本的聚合关系中部分类 的生命周期独立于 整体类 的生命周期。
举例来说,我们可以想象,车 是一个整体实体,而 车轮 轮胎是整辆车的一部分。
轮胎可以在安置到车时的前几个星期被制造,并放置于仓库中。
在这个实例中,Wheel类实例清楚地独立地Car类实例而存在。
然而,有些情况下, 部分 类的生命周期并 不 独立于 整体 类的生命周期 -- 这称为合成聚合。
举例来说,考虑公司与部门的关系。
公司和部门 都建模成类,在公司存在之前,部门不能存在。
这里Department类的实例依赖于Company类的实例而存在。
让我们更进一步探讨基本聚合和组合聚合。
基本聚合
有聚合关系的关联指出,某个类是另外某个类的一部分。
在一个聚合关系中,子类实例可以比父类存在更长的时间。
为了表现一个聚合关系,你画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。
图 12 显示车和轮胎间的聚合关系的例子。
图 12: 一个聚合关联的例子
组合聚合
组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于父类实例的生命周期。
在图13中,显示了Company类和Department类之间的组合关系,
注意组合关系如聚合关系一样绘制,不过这次菱形是被填充的。
图 13: 一个组合关系的例子
在图 13 中的关系建模中,一个Company类实例至少总有一个Department类实例。
因为关系是组合关系,当Company实例被移除/销毁时,Department实例也将自动地被移除/销毁。
组合聚合的另一个重要功能是部分类只能与父类的实例相关(举例来说,我们例子中的Company类)。