在学习 OOP 的过程中,肯定会接触到类间关系这一概念,目前的我的认知是:类间关系就是两个大类关联和继承(不知道是否有偏差...)
关联关系可以就依据耦合度的强弱划分为:依赖,关联,聚合,组合四种(耦合度依次增强)。耦合度简单的说的就是关系的紧密程度(类 A 改变对类 B 的影响程度),详情请自行谷歌
四种关系的区别概述如下:
1. 依赖关系(Dependency)比较好区分:主要的表现形式是局部变量,方法的参数,静态方法的调用。
eg: 人有驾驶这个行为,可以定义 drive() 方法。传入的参数可以是自行车,摩托车,汽车等。可以定义类 Person,Bike,Car:实例化后,car 或 bike 传入 person.drive() 中。行为 drive 的实现依赖于 car 或 bike。但是不具体依赖于特定的对象。
2. 关联,聚合,组合 都是通过类的成员变量的方式体现
3. 同一层级的类的关系一般是关联关系
4. 如果两个类是整体和个体(局部)的关系,那就是聚合(组合)关系
5. 聚合包含组合关系(像长方形包含正方形一下)
6. 聚合和组合的区别:对象能否脱离整体单独存在,可以就是聚合中的个体,不可以就是组合中的局部
‘单独存在’:也表明了对象的生存周期,组合关系中局部对象的生存周期依附于整体对象之上。即整体负责局部的生命周期