时序图 —— 讲清“对象之间怎么互动”
1. 核心思想(老师再问你)
现在,我们不看宏观流程了,我们拿“放大镜”看流程中的某一个瞬间。比如“用户支付”这个动作,背后系统内部是怎么协作的?
时序图就像一场戏的“分镜头脚本”,它精确展示了对象之间传递消息的顺序和时间关系。它关注的是 “交互” 和 “时间顺序”。
2. 核心要素(新的“积木块”)
对象: 参与交互的各个实体。例如:用户界面、订单服务、支付网关、数据库。
画法: 矩形框,里面带下划线
[ :Object ]
生命线: 每个对象下方的一条垂直虚线,代表该对象随时间的存在。
画法: 竖虚线 - - -
激活条: 生命线上的窄矩形,表示对象执行操作的时间段。
画法: 竖条 ▮
消息: 对象之间传递的请求或信号。例如:支付请求、验证结果。
画法: 带箭头的实线 → (同步消息) 或 带箭头的虚线 ──→ (异步消息/返回消息)
时序: 严格从上到下,时间越早的越在上面。
3. 动手实践:绘制“用户支付”时序图
确定交互对象:
:用户界面、:订单服务、:支付网关、:数据库画生命线: 为每个对象画一条垂直的虚线。
从第一条消息开始:
:用户界面发送支付请求()给:订单服务。
4.逐步推演:
:订单服务收到请求后,激活。它先向:数据库发送更新订单状态(待支付)的消息。:数据库完成更新后,返回一个确认消息。:订单服务再向:支付网关发送执行扣款()的消息。:支付网关处理扣款,然后返回扣款结果(成功)。:订单服务再次请求:数据库更新订单状态(支付成功)。:数据库返回确认。
5.结束交互:
:订单服务 向 :用户界面 返回 支付成功提示。
(请看下方的时序图示例)

6.给萌新的黄金法则
一句口诀: 从上到下是时间,对象互动靠消息。
常见误区: 消息顺序画错;忘了画返回消息。
