[设计模式] 读懂UML图
类之间关系(由强到弱)
- realize(继承):三角+实线(指向类),继承类(SUV是一种汽车)
- generalization(实现):三角+虚线(指向接口),实现接口(汽车是一种车)
- composition(组合):实菱形+实线(指向个体),强依赖(汽车没了,发动机就没了),特殊的聚合,构造函数
- aggregation(聚合):空菱形+实线(指向个体),非强依赖(班级没了,学生还在),特殊的关联,一对多关系,一个对象拥有一组其他对象,并扮演容器或集合的角色
- association(关联):箭头+实线(指向被依赖者),静态,天然的联系(学生带着身份证),如一个类对象是另一个类的成员变量(意味着后者总能访问前者)
- dependency(依赖):箭头+虚线(指向被依赖者),动态,运行时的联系(学生只在上学时用自行车),修改一个类的定义可能会造成另一个类的变化,如一个类是另一个类方法的参数

(有的箭头没打上,以下图为准)

总结
- 分为三组记忆,箭头--菱形--三角,关联由弱到强;每组中采用实/虚,实心/空心表示关联强弱
- 泛化、实现是is-a,聚合、组合是has-a
- 每项分两个格,填写属性和方法,-表示私有,+表示公有
- 箭头发出的一方是主体,即A
- 从上到下,A和B的力量对比发生变化,B不断“变强”,由小弟成长为父亲
- 代码体现
- 依赖:B是A中某个方法的参数或返回值(B是A动作的条件或对象,只有A有所动作时,B对A才有意义)
- 关联:B是A的一个普通属性(B是A的一部分,A只要创建了,B对A就有意义)
- 聚合:B是A的属性,且为一对多关系,即A通过容器存储一组B;A和B的生命周期不同,即A可以创建B,但不负责销毁
- 组合:B是A的属性,A和B的生命周期相同,同生共死,即A在构造方法里创建B,在析构方法里销毁B
- 实现:B是接口,A是实现类(B是A的行为标准,A需要看B眼色行事)
- 继承:B是父类,A是子类(A是B生出来的,无条件继承B的一切)
参考
设计模式
https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html
代码中的聚合&组合
https://www.2cto.com/kf/201410/347867.html
应用实例
https://blog.csdn.net/qq_31059985/article/details/72717467
九种UML图
https://www.cnblogs.com/jiangds/p/6596595.html
[设计模式] 读懂UML图的更多相关文章
- 五分钟读懂UML类图
平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...
- 五分钟读懂UML类图(转)
平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...
- 五分钟让你读懂UML常见类图
相信各位同学在阅读一些源码分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,经常看到UML类图但还不太熟悉的小伙伴赶紧来一起认识一下它吧:) 一 ...
- 五分钟读懂UML类图(转)
平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...
- 读懂UML类图
平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...
- 看懂UML图
看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...
- 从IDEA角度来看懂UML图
前言 我们目前已经学习了设计模式的7种设计原则.下面本该是直接进入具体的设计模式系列文章. 但是呢在我们学习设计模式之前我们还是有必要了解一下uml图.因为后续的设计模式文章不出意外应该会很多地方使用 ...
- Java设计模式(一):设计模式概述、UML图、设计原则
1 设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977年美国著名建筑大师.加利福尼亚大学伯克利分校环境结构 ...
- 设计模式(一)----设计模式概述及UML图解析
1.设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977年美国著名建筑大师.加利福尼亚大学伯克利分校环境结构 ...
随机推荐
- Flutter原理简介
Flutter 是怎么运转的? 与用于构建移动应用程序的其他大多数框架不同,Flutter 是重写了一整套包括底层渲染逻辑和上层开发语言的完整解决方案.这样不仅可以保证视图渲染在 Android 和 ...
- 敏捷史话(十二):你现在接触的敏捷也许是“黑暗敏捷”——Ron Jeffries
他很少提起往事,也不再提及二十年前那场引起软件行业变革的会议,他专注于当下,一直活跃在敏捷领域.八十多岁的他依然运营维护着网站和博客,是极限编程网站 XProgramming.com 的作者,该网站是 ...
- ASP.NET扩展库之Http日志
最佳实践都告诉我们不要记录请求的详细日志,因为这有安全问题,但在实际开发中,请求的详细内容对于快速定位问题却是非常重要的,有时也是系统的强力证据.Xfrogcn.AspNetCore.Extensio ...
- 带你全面认识CMMI V2.0(一)
新发布的CMMI V2.0在方法论和方法上都提出了一些战略上的变化和改进.这些更新提供了新的要求.历史标准的演进以及以往实践的延续. CMMI V2.0和CMMI V1.3的变化 CMMIV2.0的定 ...
- 201873030133-杨子豪 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 班级博客链接 这个作业要求链接 作业要求链接 我的课程学习目标 了解软件工程的作用与意义,将软件工程与过去所学相结合 这个作业在哪些方面帮助我实现学习目标 体验了结对式的 ...
- Dynamics CRM实体系列之字段
本节开始讲实体中的基础数据存储对象,也就是字段. Dynamics CRM目前总共有13种字段类型,分别为单行文本.选项集.多选选项集.两个选项.图像.整数.浮点数.十进制数.货币.多行文本.日期和时 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(四)——一步一步教你如何撸Dapr之订阅发布
之前的章节我们介绍了如何通过dapr发起一个服务调用,相信看过前几章的小伙伴已经对dapr有一个基本的了解了,今天我们来聊一聊dapr的另外一个功能--订阅发布 目录:一.通过Dapr实现一个简单的基 ...
- 06_pytorch的autograd操作
06_pytorch的autograd操作 目录 一.引言 二.Variable 2.1 Variable 的数据结构 2.2 反向传播 2.3 autograd 求导数和手动求导数 三.计算图 3. ...
- redhat7.6 安装 Python 3
redhat7.6 默认安装了python2.7. 查看已安装python情况 cd / # 定位到根目录 whereis python # 查看python所在目录 /usr/bin cd /usr ...
- JAVAEE_Servlet_03_Servlet对象生命周期
Servlet的对象声明周期 * 什么是对象生命周期? - 生命周期表示一个JAVA对象从创建到销毁的过程是一个生命周期 * Servlet对象生命周期 1. Servlet对象创建 无参构造 2. ...