uml类图常见关系
1.泛化关系
泛化关系是继承或实现的关系,是is-a关系,具体表现为类与类的继承,接口与接口的继承,类对接口的实现关系。

2.依赖关系
依赖关系表示为一个类使用另一个类,这种使用关系是具有偶然性的、临时性的、非常弱的,一个类的变化会影响到另一个类,是use a关系,如果类A依赖于类B,那么类B可以是类A的局部变量,或类A方法的参数,或静态方法的调用。

3.关联关系
关联关系是一种强依赖关系,这种关系不存在依赖关系的偶然性,关系也不是临时的,是长期的,稳定的。双方的关系是平等的,可以单向关联也可以是双向关联。假如类A关联了类B,则类B是类A的全局变量(注意是全局变量,再看看上面的依赖关系),大多数关联都是单向关联,这比较容易维护,关于关联,在生活中我们常会说,类A持有类B的引用。

4.聚合关系
聚合关系是特殊的关联关系,是一种强的关联关系,他体现的是整体与部分关系,即has-a的关系,但是整体和部分是可以分离的,注意,是可以分离的。普通关联关系的两个类处于同一层次上,是平级的,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分。同时,是一种弱的“拥有”关系。体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建,这句话非常有意义,它在代码中通常体现成依赖注入的setter方法,即A对象可以随时创建B对象,再想想这不就体现了整体和部分是可以分离了吗?创建整体的时候可以不创建部分。

5.组合关系
组合关系也是特殊的关联关系,它体现一种contains a(拥有)关系,这种关系是比聚合还要强,也称为强聚合。体现了严格的整体和部分关系,两者是不可分割的,它们的生命周期是一致的。如果A由B组成,那么A就包含B的全局变量,并在创建A的同时创建B,在代码上我们通常是使用构造函数进行实现,也是依赖注入中构造函数的实现。

最后,我们来总结一下,泛化就不用多少了,大家都懂的,就是继承和实现接口,重点说下其它的吧,依赖,ClassB体现为ClassA的局部变量,我想用就用,用了就有关系,不用就没关系;关联,ClassB体现为ClassA的全局变量,不管你用不用,反正你知道我的存在了,持有了我的引用。聚合,是特殊的关联关系,用了就加强了关系,不用还是我只知道你的存在。聚合可以方便的持有多个类的引用,如使用List<>,所以当你发现有List<>等集合是可以使用聚合来表示,比如观察者模式的结构。组合,体现最强的关系,比如人出身了,必定也有头部吧,不然我真无法想象这个世界了。
相关文章

WebStorm如何调试Vue项目? webstorm配置vue开发环境指南
WebStorm 支持多种调试工具,包括浏览器的开发者工具,但本文主要讲解的是使用 WebStorm 自带的调试功能2025-04-15
VSCode和webstorm怎么设置绿色护眼背景? 绿豆沙背景色的设置方法
护眼色一定程度能保护眼睛,缓解疲劳,VSCode和webstorm这两款常用的软件怎么设置护眼色呢?详细请看下文介绍2025-04-15
WebStorm本身已经足够强大,但一些优秀的插件能锦上添花,显著提升开发效率,详细请看下文介绍2025-04-15
如何安装配置WebStorm? WebStorm安装与使用全方位指南
WebStorm软件在前端和后端开发领域都备受青睐,很多朋友不知道该怎么下载安装,下面我们就来看看详细的安装配置教程2025-04-15
Webstorm怎么配置? Webstorm入门之软件配置教程
WebStorm是一款功能强大的集成开发环境(IDE),支持各种前端开发技术,今天我们就来看看Webstorm的配置教程2025-04-15
WebStorm 允许您自定义界面颜色,以创建更个性化和美观的工作空间,今天我们就来看看Webstorm改变字体大小、背景颜色、设置背景图片的方法2025-04-15
VScode上安装PlatformIO插件能成功安装,尝试卸载VScode并删除插件,这些错误仍然存在,下面我们就来看看这个问题的解决办法2025-04-03
提升代码搜索效率! VSCode里DeepSeek插件安装与配置指南
今天我们将向大家介绍如何在Visual Studio Code中安装并配置 DeepSeek 插件,帮助你更高效地进行代码搜索2025-04-07
VSCode是一款免费且开源的代码编辑器,因其强大的功能和良好的用户体验而广受欢迎,本文将详细介绍 VSCode 的基本使用方法,并通过插图帮助你更好地理解2025-04-03
今天我们来聊聊如何安装和配置VS Code,让它成为你编程路上的得力助手,这个过程其实很简单,只要跟着我的步骤走,你绝对能搞定2025-04-03






最新评论