设计模式 - 学习笔记 - UML统一建模语言


由于是学习设计模式的准备工作,这里只是学习了一下UML中的类图、关系

类图

类名
+公共属性: String
-私有属性: String
#保护属性 String
默认属性 String
+公共方法(String)
-私有方法(String)
#保护方法(String)
属性说明类型非必填
+公共属性: String+号表示publicString
-私有属性: String-号表示privateString
#保护属性: String#号表示protectedString
~默认属性: String~号表示default可省略String
+静态属性: String下划线表示静态,同样适用于类名String
方法说明参数类型返回类型非必填
+公共方法(String): int +号表示publicStringint
-私有方法(String): int-号表示privateStringint
#保护方法(String): int#号表示protectedStringint
抽象方法(String): int斜体号表示抽象,同样适用于类名Stringint

关系类型

classDiagram
    classA --|> classB : 继承
    classC --* classD : classC_1...classC_n 组合为 classD 
    classE --o classF : classE_1...classE_n 聚合为 classF 
    classG --> classH : 单向关联
    classI <--> classJ : 双向关联 (原文中是无箭头的实线)
    classK ..> classL : 依赖
    classM ..|> classN : 接口实现
    classO .. classP : 关联(虚线)难道是弱关联?没见过
继承
组合
组合
聚合
聚合
单向关联
双向关联
依赖
接口实现
关联(虚线)难道是弱关联?
classA
classB
classC1
classD
classC2
classE1
classF
classE2
classG
classH
classI
classJ
classK
classL
classM
classN
classO
classP

1. 泛化 Generalization

  • 表示从子类到父类,越来越概括的关系(另一个角度从父到子越来越具象)。就理解为继承就好了。
  • 图例说明:实线+三角箭头。(三角箭头没区别)
  • 箭头指向:从子类指向父类

2. 实现 Realization

  • 类实现接口,具体类实现抽象类。
  • 图例说明:虚线+三角箭头。(三角箭头没区别)
  • 箭头指向:从实现类指向接口

3. 组合 Combination

  • 表示整体与部分的关系。紧耦合,部分与整体结合后具有相同的生命周期。类似人体与四肢。
  • 图例说明:实线+实心菱形箭头
  • 箭头指向:从部分指向整体
  • 也有的地方叫复合,比如在 Visio 2016

4. 聚合 Aggregate

  • 表示整体与部分的关系。松散结合类似变形金刚。
  • 图例说明:[普通箭头]+实线+空心菱形箭头。(指向部分普通箭头可省略)
  • 箭头指向:从部分指向整体

5. 关联 Association

  • 表示一种拥有关系,具有方向性。如果A单向访问B则为单向关联。AB互相访问则为双向关联

  • 图例说明:实线+普通箭头。(双向可省略箭头)

  • 箭头指向:从引用方指向被引用方

  • 与依赖的区别:关联关系需要持久化。依赖只是临时调用。

6. 依赖关系 Dependency

  • 自己临时需要借助对方的能力来完成自己的工作。
  • 图例说明:虚线+普通箭头
  • 箭头指向:从自己指向对方(被依赖的目标)

网上很多举例:人啊、水啊、空气啊。。。问题我不是不懂依赖这两个汉字啊。我想知道的是它在编码要干啥?

  • ClassA 依赖 ClassB 表示如下:
  1. A 的方法参数用到 B
  2. A 的属性用到 B
  3. A 调用了 B静态方法or属性

直观的说就是ClassAClassB 的代码写好后,你删了ClassB那么ClassA会报错。
常见的场景:我们的服务层需要注入工具类来完成工作。

以上六种关系的耦合度。强==>弱

从强到弱:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
在这里插入图片描述

横向

继承
继承
List
Collection
Iterable

参考资料

UML建模之类图(Class Diagram,UML图)
使用Mermaid语法画UML类图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑虾

多情黯叹痴情癫。情癫苦笑多情难

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值