设计模式 - 学习笔记 - UML统一建模语言
Posted 笑虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式 - 学习笔记 - UML统一建模语言相关的知识,希望对你有一定的参考价值。
设计模式 - 学习笔记 - UML统一建模语言
由于是学习设计模式的准备工作,这里只是学习了一下UML中的类图、关系
类图
属性 | 说明 | 类型非必填 |
---|---|---|
+公共属性: String | + 号表示public | String |
-私有属性: String | - 号表示private | String |
#保护属性: String | # 号表示protected | String |
~默认属性: String | ~ 号表示default 可省略 | String |
+静态属性: String | 下划线 表示静态 ,同样适用于类名 | String |
方法 | 说明 | 参数类型 | 返回类型非必填 |
---|---|---|---|
+公共方法(String): int | + 号表示public | String | int |
-私有方法(String): int | - 号表示private | String | int |
#保护方法(String): int | # 号表示protected | String | int |
抽象方法(String): int | 斜体 号表示抽象 ,同样适用于类名 | String | int |
关系类型
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 : 关联(虚线)难道是弱关联?没见过
1. 泛化 Generalization
- 表示从子类到父类,越来越概括的关系(另一个角度从父到子越来越具象)。就理解为继承就好了。
- 图例说明:
实线
+三角箭头
。(三角箭头空
心实
心没区别
) - 箭头指向:从
子类
指向父类
。
2. 实现 Realization
- 类实现接口,具体类实现抽象类。
- 图例说明:
虚线
+三角箭头
。(三角箭头空
心实
心没区别
) - 箭头指向:从
实现类
指向接口
。
3. 组合 Combination
- 表示整体与部分的关系。紧耦合,部分与整体结合后具有相同的生命周期。类似人体与四肢。
- 图例说明:
实线
+实心菱形箭头
。 - 箭头指向:从
部分
指向整体
。 - 也有的地方叫
复合
,比如在 Visio 2016
4. 聚合 Aggregate
- 表示整体与部分的关系。松散结合类似变形金刚。
- 图例说明:[
普通箭头
]+实线
+空心菱形箭头
。(指向部分
的普通箭头
可省略) - 箭头指向:从
部分
指向整体
。
5. 关联 Association
-
表示一种拥有关系,具有方向性。如果A单向访问B则为
单向关联
。AB互相访问则为双向关联
。 -
图例说明:
实线
+普通箭头
。(双向可省略箭头) -
箭头指向:从
引用方
指向被引用方
。 -
与依赖的区别:关联关系需要持久化。依赖只是临时调用。
6. 依赖关系 Dependency
- 自己
临时
需要借助对方
的能力来完成自己的工作。 - 图例说明:
虚线
+普通箭头
。 - 箭头指向:从
自己
指向对方(被依赖的目标)
。
网上很多举例:人啊、水啊、空气啊。。。问题我不是不懂依赖
这两个汉字啊。我想知道的是它在编码要干啥?
ClassA
依赖ClassB
表示如下:
A
的方法参数用到B
A
的属性用到B
A
调用了B
静态方法or属性
直观的说就是ClassA
、ClassB
的代码写好后,你删了ClassB
那么ClassA
会报错。
常见的场景:我们的服务层
需要注入工具类
来完成工作。
以上六种关系的耦合度。强==>弱
从强到弱:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
参考资料
以上是关于设计模式 - 学习笔记 - UML统一建模语言的主要内容,如果未能解决你的问题,请参考以下文章