类之间关系(由强到弱)

  • 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图的更多相关文章

  1. 五分钟读懂UML类图

    平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...

  2. 五分钟读懂UML类图(转)

    平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...

  3. 五分钟让你读懂UML常见类图

    相信各位同学在阅读一些源码分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,经常看到UML类图但还不太熟悉的小伙伴赶紧来一起认识一下它吧:)   一 ...

  4. 五分钟读懂UML类图(转)

    平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...

  5. 读懂UML类图

    平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...

  6. 看懂UML图

    看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...

  7. 从IDEA角度来看懂UML图

    前言 我们目前已经学习了设计模式的7种设计原则.下面本该是直接进入具体的设计模式系列文章. 但是呢在我们学习设计模式之前我们还是有必要了解一下uml图.因为后续的设计模式文章不出意外应该会很多地方使用 ...

  8. Java设计模式(一):设计模式概述、UML图、设计原则

    1 设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977年美国著名建筑大师.加利福尼亚大学伯克利分校环境结构 ...

  9. 设计模式(一)----设计模式概述及UML图解析

    1.设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977年美国著名建筑大师.加利福尼亚大学伯克利分校环境结构 ...

随机推荐

  1. 计算机体系结构——CH4 输入输出系统

    计算机体系结构--CH4 输入输出系统 右键点击查看图像,查看清晰图像 X-mind 计算机体系结构--CH4 输入输出系统 输入输出原理 特点 实时性 与设备无关性 异步性 输入输出系统的组织方式 ...

  2. java面试-内存分配与回收策略

    1.对象优先在Eden分配 -Xms20M -Xmx20M java堆的大小20M -Xmn10M 新生代10M 老年代10M -XX:SurvivorRatio=8 新生代Eden与一个Surviv ...

  3. Python是啥?为什么这么多职业人和学生就算报班也要学它?!

    嗨,大家好 这里是汐仔 首先我们先来考究一下近几年的头条和新闻. 1.早在2018年python就已经被纳入高考之一了 2.Python加入全国计算机等级考试,从2018年九月起新增为大学计算机二级考 ...

  4. 跨域库herryPostMessage.js的一些优化,多iframe跨域

    旧库见文章:https://www.cnblogs.com/wuhairui/p/14595893.html 新版库主要做了下多个iframe和父页面交互的优化.主要使用构造函数的方式将多个ifram ...

  5. 广告成本控制-PID算法

    今天我们来聊聊广告成本控制中常用的PID算法. 0.PID算法简介 首先我们可以看下维基百科中给PID算法的定义:由比例单元(Proportional).积分单元(Integral)和微分单元(Der ...

  6. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作centos6.5-14

    自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作centos6.5-14 欢迎加QQ群:1026880196 进行交流学习 制作OpenSta ...

  7. D - The Frog's Games (二分)

    The annual Games in frogs' kingdom started again. The most famous game is the Ironfrog Triathlon. On ...

  8. Sublime Text 3.1 3170 / 3176 注册码(附降级与禁止更新方法)

    3.1 3176 可用注册码 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com ----- BEGIN LICENSE --- ...

  9. 【Java基础】ConcurrentHashMap为什么不能存null键和null值

    代码如下 /** * 测试ConcurrentHashMap null键和null值的问题 * @return */ @RequestMapping(value = "/get_nacos& ...

  10. php 操作 redis 常用命令

    原文地址: https://www.cnblogs.com/zhanghanwen16/p/9510481.html 1.redis连接与认证 //连接参数:ip.端口.连接超时时间,连接成功返回tr ...