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

Bertha 。 2022-08-29 00:18 306阅读 0赞

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

  • 类图
  • 关系类型
      1. 泛化 Generalization
      1. 实现 Realization
      1. 组合 Combination
      1. 聚合 Aggregate
      1. 关联 Association
      1. 依赖关系 Dependency
    • 以上六种关系的耦合度。强==>弱
  • 参考资料

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

类图

类名+公共属性: String -私有属性: String #保护属性 String 默认属性 String+公共方法(String) -私有方法(String) #保护方法(String)




































属性 说明 类型非必填
+公共属性: 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

关系类型

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

classAclassBclassC1classDclassC2classE1classFclassE2classGclassHclassIclassJclassKclassLclassMclassNclassOclassP继承组合组合聚合聚合单向关联双向关联依赖接口实现关联(虚线)难道是弱关联?

1. 泛化 Generalization

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

2. 实现 Realization

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

3. 组合 Combination

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

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类图

发表评论

表情:
评论列表 (有 0 条评论,306人围观)

还没有评论,来说两句吧...

相关阅读

    相关 UML统一语言

    什么是UML? UML全称是:Unified Modeling Language 又称统一建模语言或标准建模语言。 > 是一个支持模型化和软件系统开发的图形化语言,为软

    相关 UML统一语言

    什么是UML? UML全称是:Unified Modeling Language 又称统一建模语言或标准建模语言。 > 是一个支持模型化和软件系统开发的图形化语言,为软