概述
在UML类图中,类之间的耦合关系存在多种,它们从弱到强排序为:
依赖 < 关联 < 聚合 < 组合 < 泛化 < 继承。
如下图所示:
依赖(dependency)
- 说明:是一种使用关系。
- 形状:虚线+V型箭头,箭头指向被使用者。
- 体现:局部变量、方法参数或者调用静态方法。
- 示例:持久层
DemoDao
类的insert(DemoPo po)
方法中使用了参数DemoPo po
。
关联(association)
- 说明:是一种拥有关系。
- 形状:实线+V型箭头,箭头指向被拥有者。
- 体现:成员变量。
- 示例:控制层
DemoController
类中拥有成员变量服务层DemoService
。
聚合(aggregation)
- 说明:是一种整体与部分的关系,部分可以
单独存在
。 - 形状:空心菱形+实线+V型箭头,菱形指向整体,箭头指向部分。
- 体现:成员变量。
- 示例:公司
Company
作为一个整体,旗下拥有很多个员工Employee
,这些员工是公司这个整体的一部分;员工Employee
也可以单独存在,有自己的行为。
组合(composition)
- 说明:是一种整体与部分的关系,部分
只能依赖整体存在
。 - 形状:实心菱形+实线+V型箭头,菱形指向整体,箭头指向部分。
- 体现:成员变量。
- 示例:自定义的链表
MyList
作为一个整体,其内有很多个节点Node
,这些节点是链表这个整体的一部分;节点Node
不能单独存在,它的一切行为都是为了服务链表。
实现(realization)
- 说明:是一种接口与类的关系。
- 形状:空心三角箭头+虚线,箭头指向接口,虚线指向类。
- 体现:类实线接口。
- 示例:接口
List
的一个实现类是ArrayList
。
泛化(generalization)
- 说明:是一种父类与子类的关系。
- 形状:空心三角箭头+实线,箭头指向父类,实线指向子类。
- 体现:子类继承父类。
- 示例:父类
AbstractPerson
的一个子类是Person
。
总结
在UML类图中,类之间的耦合关系存在多种,它们从弱到强排序为:
依赖 < 关联 < 聚合 < 组合 < 泛化 < 继承。