Java开发 类与类之间的关系(关联+依赖)【学习篇8】
2020-04-26 本文已影响0人
iOS_PM_WEB_尛鹏
【作者前言】:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢迎各路豪杰点评改进!
[1]
🔥知识点内容
🔓1. 关联 [2]
关联是一种
结构关系
,说明一个事物的对象与另一个事物的对象相联系
。给定有关联的两个类,可以从一个类的对象得到一个类的对象。关联有两元
关系和多元
关系。两元关系是指一种一对一
的关系,多元关系是一对多
或多对一
的关系
关联就是某个对象会长期的持有另一个对象的引用
,而二者的关联往往也是相互的。关联的两个对象彼此间没有任何强制性的约束,只要二者同意,可以随时解除关系或是进行关联,它们在生命期问题上没有任何约定。被关联的对象还可以再被别的对象关联,所以关联是可以共享的。
两个类之间的简单关联表示了两个同等地位
类之间的结构关系
。当你想要表示结构化关系时使用关联
关联
表示has-a
关系,如学生拥有一个课程,往往表现为B作为A的属性存在(A关联B)
一对一
最典型的一对一关系莫过于人和证件之间的关联,例如:一个人只能有一个驾照,而一个驾照只能归属与一个人:
image.png一对多
人还可以跟其他事物构建一对多的关联关系,比如将驾照换为荣誉证书,那么一个人可以有多个荣誉证书,我们可以使用数组或集合来描述这个关系
image.png
- 关联关系还可以细分为
聚合
和组合
两种
聚合是一种特殊的关联
[3],表示整体对象拥有部分对象。 关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。聚合是较强的关联关系,强调的是整体与部分之间的关系。聚合的整体和部分之间在生命周期上没有什么必然的联系,部分对象可以在整体对象创建之前创建,也可以在整体对象销毁之后销毁。
image.png组合是聚合的一种形式
[4],它具有更强的拥有关系,强调整体与部分的生命周期是一致的
,整体负责部分的生命周期的管理。生命周期一致指的是部分必须在组合创建的同时或者之后创建,在组合销毁之前或者同时销毁,部分的生命周期不会超出组合的生命周期。例如Windows的窗口和窗口上的菜单
就是组合关系
。如果整体被销毁,部分也必须跟着一起被销毁,如果所有者被复制,部分也必须一起被复制。
image.png
🔓2.依赖 [5]
依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立
此关系最为简单,也最好理解,所谓依赖
就是某个对象的功能依赖于另外的某个对象,而被依赖的对象只是作为一种工具在使用,而并不持有对它的引用
依赖体现了“use a
”关系
依赖关系一般使用方法的参数体系
🔓3.类与类之间的关系 [6]
类与类之间的横向关系较为微妙,大体上可以分为四种:
image.png依赖 、关联、聚合、组合
。
依赖
体现了use a
关系,通常使用方法的参数描述
关联
体现了has a
关系,通常使用类的成员属性描述
几种关系的强弱如下:依赖
<关联
<聚合
<组合