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

Posted 笑虾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式 - 学习笔记 - 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会报错。
常见的场景:我们的服务层需要注入工具类来完成工作。

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

从强到弱:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

参考资料

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

以上是关于设计模式 - 学习笔记 - UML统一建模语言的主要内容,如果未能解决你的问题,请参考以下文章

UML统一建模语言学习笔记

《UML大战需求分析》阅读笔记1

干货UML统一建模语言

UML学习笔记

UML图学习笔记

UML图学习笔记