uml图详细介绍

下面用「一张速查表 + 大量可运行案例 」把 UML 里最常用 的三张图(类图 / 时序图 / 活动图)彻底讲透。

每个案例都给出 PlantUML 源码 ,复制→粘贴到www.planttext.com/ 即可秒出高清矢量图,也能直接嵌入 Markdown / Confluence / PPT。


一、速查表:3 张图各自解决什么问题?

图类型 回答的问题 核心元素 记忆口诀
类图(Class Diagram) 系统「长什么样」:有哪些类?各自职责?类之间怎么协作? 类=三层方框(名字-属性-方法)+ 五种关系线 "静态骨架"
时序图(Sequence Diagram) 对象之间「先说什么、后说什么」:消息按时间顺序怎么流动? 生命线+箭头调用+激活条 "动态对话"
活动图(Activity Diagram) 业务流程「怎么走」:if/else、并发、循环、异常怎么流转? 圆角动作+菱形分支+黑棒同步 "流程地图"

二、类图:静态骨架(7 个案例)

  1. 类的"长什么样"------三层方框
plantuml 复制代码
@startuml
class Student {
    -id: Long
    -name: String
    +study()
}
@enduml
  1. 关联关系:一对一 / 一对多 / 多对多
plantuml 复制代码
@startuml
class Order {}
class OrderItem {}
class Product {}
Order "1" --> "*" OrderItem : contains
OrderItem "*" --> "1" Product : refers
@enduml
  1. 聚合 VS 组合:生命周期强弱
plantuml 复制代码
@startuml
class Car {}
class Engine {}
class Wheel {}

Car o-- Engine : 聚合(车报废引擎可再用)
Car *-- "4" Wheel : 组合(车销毁轮子也销毁)
@enduml
  1. 继承(泛化)(支付渠道例子)
plantuml 复制代码
@startuml
abstract Payment {
    +pay()
}
Payment <|-- Alipay
Payment <|-- WechatPay
@enduml
  1. 实现接口(Java 8 默认方法同理)
plantuml 复制代码
@startuml
interface Flyable {
    +fly()
}
class Bird {}
Flyable <|.. Bird : 实现
@enduml
  1. 设计模式:策略模式类图
plantuml 复制代码
@startuml
interface DiscountStrategy {
    +calc(price: BigDecimal): BigDecimal
}
DiscountStrategy <|-- VipStrategy
DiscountStrategy <|-- CouponStrategy
class OrderContext {
    -strategy: DiscountStrategy
    +execute(price: BigDecimal)
}
OrderContext --> DiscountStrategy : 使用
@enduml
  1. SpringBoot 三层架构(Controller→Service→DAO)
plantuml 复制代码
@startuml
class UserController {}
interface UserService {}
class UserServiceImpl {}
interface UserRepository {}
class UserRepositoryImpl {}

UserController --> UserService
UserService <|.. UserServiceImpl
UserServiceImpl --> UserRepository
UserRepository <|.. UserRepositoryImpl
@enduml

三、时序图:动态对话(6 个案例)

  1. 基础语法:生命线+调用箭头+返回虚线
plantuml 复制代码
@startuml
actor Alice
participant Bob
Alice -> Bob: hello()
Bob --> Alice: ok
@enduml
  1. 循环与条件(登录重试 3 次)
plantuml 复制代码
@startuml
actor 用户
participant 前端
loop 3 times
    用户 -> 前端: 输入密码
    alt 密码正确
        前端 --> 用户: 登录成功
        break
    else 密码错误
        前端 --> 用户: 提示重输
    end
end
@enduml
  1. 异步消息(AJAX 回调)
plantuml 复制代码
@startuml
actor 浏览器
participant 前端JS
participant 后端
browser -> 前端JS: 点击提交
前端JS -> 后端: POST /api/async
前端JS --> browser: 立即显示"处理中"
后端 -> 前端JS: 回调结果
前端JS -> browser: 更新页面
@enduml
  1. Redis 分布式锁完整生命周期
plantuml 复制代码
@startuml
actor 线程
participant Redis
participant MySQL

线程 -> Redis: SET lock uuid NX EX 30
alt 返回 OK
    线程 -> MySQL: SELECT ... FOR UPDATE
    线程 -> MySQL: UPDATE ...
    线程 -> Redis: DEL lock
else 返回 nil
    线程 -> 线程: sleep(0.1)
    线程 -> Redis: 重试
end
@enduml
  1. 微服务 Feign 调用链(含熔断)
plantuml 复制代码
@startuml
actor 用户
participant OrderService
participant StockService
participant Hystrix

OrderService -> Hystrix: 扣库存()
Hystrix -> StockService: POST /stock/reduce
alt 成功
    StockService --> Hystrix: 200
else 失败 / 超时
    Hystrix --> OrderService: 熔断返回fallback
end
@enduml
  1. 下单→支付→履约 全流程(跨 4 个域)
plantuml 复制代码
@startuml
actor 用户
boundary 网关
control 订单中心
control 支付中心
database MySQL
queue 消息队列
control 库存中心

用户 -> 网关: POST /order
网关 -> 订单中心: createOrder()
订单中心 -> MySQL: insert
订单中心 -> 支付中心: createPayment()
支付中心 -> MySQL: insert
支付中心 -> 消息队列: PaymentSuccess事件
消息队列 -> 库存中心: 扣库存
库存中心 -> MySQL: update stock
@enduml

四、活动图:流程地图(5 个案例)

  1. 基本分支:电商下单
plantuml 复制代码
@startuml
start
:创建订单;
if (库存充足?) then (yes)
    :扣库存;
    :支付;
    if (支付成功?) then (yes)
        :发货;
        :完成;
    else (no)
        :取消订单;
        :恢复库存;
    endif
else (no)
    :提示缺货;
endif
stop
@enduml
  1. 并行(Fork/Join):外卖下单后并行流程
plantuml 复制代码
@startuml
start
:下单成功;
fork
    :商家接单;
fork again
    :骑手接单;
fork again
    :系统通知用户;
join
:配送中;
:送达;
stop
@enduml
  1. 循环:审批驳回重提
plantuml 复制代码
@startuml
start
repeat
    :员工提交申请;
    :经理审批;
    if (通过?) then (no)
        :驳回修改;
    endif
repeat while (未通过)
:归档;
stop
@enduml
  1. 异常补偿:SAGA 事务
plantuml 复制代码
@startuml
start
:下单;
:扣库存;
if (异常?) then (yes)
    :补偿:恢复库存;
    :补偿:关闭订单;
    stop
endif
:支付;
:发货;
stop
@enduml
  1. 状态机风格:订单状态流转
plantuml 复制代码
@startuml
title 订单状态机(活动图视角)
(*) --> "待支付"
"待支付" --> "已支付" : 支付成功
"已支付" --> "已发货" : 商家发货
"已发货" --> "已完成" : 确认收货
"待支付" --> "已取消" : 超时/主动取消
"已完成" --> (*)
@enduml

五、如何把图秒变 PPT / Confluence

  1. PlantUML 渲染 → 右键「下载 PNG/SVG」→ 拖进 PPT 即可矢量放大。
  2. Mermaid 代码块直接粘到 Typora / Notion / GitBook 实时预览。
  3. Draw.io 支持「链接到 GitHub 」:把 .puml 文件存仓库,Draw.io 通过 URL 导入,自动同步更新。

六、一张脑图总结(保存即可)

复制代码
类图  =  骨架  =  三层方框 + 关系线
时序图 = 对话  = 生命线 + 箭头 + 激活条
活动图 = 地图  = 圆角动作 + 菱形分支 + 黑棒并行

记住口诀

"类图看结构,时序看交互,活动看流程"------任何业务先问自己「我要看啥?」,再选图,3 分钟就能画出清晰架构。

相关推荐
rolt1 天前
软件需求设计方法学全程实例剖析幻灯片01-概述[202512更新]
产品经理·需求分析·架构师·uml·面向对象
梳子烟YAN4 天前
UML系列之Visual Paradigm教程二——用例图
uml
Geoking.5 天前
【UML】面向对象中类与类之间的关系详解
设计模式·uml
AM越.7 天前
Java设计模式详解--装饰器设计模式(含uml图)
java·设计模式·uml
-Thinker7 天前
UML 5种视图
uml
小林有点嵌8 天前
UML之时序图学习
学习·uml
小林有点嵌8 天前
UML之状态图学习
网络·学习·uml
小林有点嵌8 天前
UML之类图学习
学习·uml
小林有点嵌8 天前
UML之用例图学习
学习·microsoft·uml