如何画时序图

时序图(顺序图、序列图、循序图) 面向对象编程(OOP)是一种编程范式,它将现实世界中的实体抽象为对象,这些对象包含数据(属性)和行为(方法)。这种抽象使得软件设计更加直观,更接近人类对现实世界的理解。在面向对象的设计中,类是构建复杂系统的基础,它们定义了对象的蓝图。 学习统一建模语言(UML)对于面向对象的设计至关重要。UML提供了一套标准的图形表示法,用于描述软件系统的结构和行为。它包括用例图、类图、对象图、状态图、活动图、序列图、通信图、组件图和部署图等,这些图可以帮助开发者在设计阶段可视化系统的不同方面。 阅读详情
AI摘要

文章介绍了UML时序图在产品经理工作中的重要性,解释了时序图的用途、构成元素以及如何绘制。时序图用于描述对象间交互的顺序,帮助理解业务流程和系统逻辑。文章提供了一个简单的步骤,包括确定目标、识别对象和列出消息,来教读者如何有效地画好时序图,并建议结合其他视图如活动图进行流程分析,以获得更全面的理解。

10年产品经理教你3步画好UML时序图,轻松掌握流程分析利器【建议收藏】 - 知乎

转自知乎

上次介绍了活动图,这次分享 UML 中,另一种流程分析利器——时序图。

以前每次要分析流程,我都会用活动图。直到有一次,我面对一个业务流程,画活动图,画来画去,总觉得哪里不对,但又表达不出来,感觉如鲠在喉。

后来,我想起时序图,用时序图把流程梳理了一遍,豁然开朗。

原来,用不同的视图去描述同一个流程,能让我们看到自己未曾发现的问题。就像看足球比赛,在多个不同位置的摄像镜头下,能看到球员更全面的表现。

此后,我用时序图甚至比活动图还多。

那么,它有啥特别之处,居然能替代活动图来分析流程?我们一起来看看。

一、解读时序图

时序图,也叫序列图、顺序图,是 UML 中常用的动态视图,用于描述多个对象参与实现业务目标时,彼此之间按时间顺序进行交互的过程。

时序图,用来表达对象或角色之间交互的信息传递和时间顺序,特别方便。

每次梳理流程,跟开发沟通,我都会借助它来描述。

绘制时序图,将一个个对象和其交互动作列出来,可以直观反映出,每个对象对其他对象、或其自身做的交互动作,让我们看到业务内部的运作、系统之间的互动,从而搞清楚业务规则、系统逻辑。

在《火球:UML 大战需求分析》一书中,作者总结特别好:“任何复杂的交互,都可以分解为自己与自己、自己与别人、别人与别人的多个简单交互”。

时序图正体现了这种逻辑,所以,它表达交互逻辑时,非常清晰简单。

△ 客户用 ATM 取款的时序图

作为产品经理,如果我们能掌握这一利器,用来分析业务、定义需求,与开发沟通,定能大大提高效率。

时序图常见的应用场景,是在支付领域。例如,微信支付的开发者文档,就用时序图来表达支付的实现逻辑。

这么好的工具,赶紧学一下吧。

二、时序图的构成

时序图的常用元素很简单,分别有:对象(角色)、生命线、会话、消息(简单消息、返回消息)。

△ 时序图的常用元素


1、对象

对象,指与业务、产品或系统相关的人、事、物,可以是人、部门、系统等。

通常用矩形表示,画在时序图的顶部,对象名写在矩形内。

其中,参与交互过程的人,如用例图的参与者、参与完成业务目标的相关人员,通常称之为角色。

网上有的会把对象和角色分开来,我理解这些都是对象。只不过,在图形上,角色与用例图的参与者一样,用火柴人表示,比较好理解。

因为,UML 是面向对象思想的指导下,来描述软件产品的分析与设计。面向对象,则将现实世界的人事物,看成一个个独立的个体,称之为「 对象 」。

它们又可以根据不同的需要,以不同的角度,被归纳在一起,这就是开发人员常说的「 类 」。

比如,西瓜、苹果、梨是不同的对象,它们可以归为一类——水果;苹果手机、华为手机、小米手机,可以归为手机。

对象的命名,一般格式为:对象名:类名,如「 李四:客户 」。

按照语法,冒号和类名是必需的,对象名是可选的。具体地说,「 李四:客户 」表示李四是客户的实例,即具体到某个客户的名字。

实践中,并不需要具体到实例,对象名可以不写。我的做法是,直接写一类对象的名称,如某某系统、某某部门。

2、生命线

每个对象下有一条垂直的虚线,这就是对象的生命线,从上往下,代表时间的先后顺序。

3、会话

会话,也叫激活框,它代表在对象生命线上某个阶段执行的操作,以一个偏窄的矩形表示。

每一次会话,表示一次相对完整的交互过程。不过,怎样算一次会话,实践中有点难区分,需要多练习体会。

我常按照操作的完整度来画,有时甚至不画,有些专业的 UML 工具还能自动生成会话。

4、消息

消息,表示对象之间发送的信息或做的事情。消息,有的分为三种:同步消息、异步消息、返回消息。

从产品层面,并不需要规定技术的实现方式,是同步还是异步,这交给开发人员设计,会更为合理。

因此,我基本只用两种消息来表达:简单消息、返回消息。

1)简单消息

简单消息,用箭头实线,表示一个对象,向另一个对象发的信息,或做的事情。它不强调消息的类型,只表示交互,足以满足大部分情况。

2)返回消息

返回消息,用箭头虚线,表示一个对象,收到另一个对象的信息后,再向其返回的信息,或做的事情。

消息线上方的文字,则是注明传递的消息或执行的动作,一般用动宾短语。

这些对象间的交互消息,画在两个对象的生命线之间。对象自身做的事情,则画在自己的生命线上。

5、组合框

现实业务、系统流程中,总会有特殊情况,不可能完全按时间顺序、一条线走完。

这时,就需要用到组合框(frame)来表示常见的特殊情况,如分支、循环、并行等。

遇到这些特殊情况时,就可以把相应的交互流程放入这个框中。

△ 时序图三种常用的特殊结构

三、时序图的画法

下面,还是以之前的 「 手机话费充值 APP 」 为例(案例详见《用例图这样画,3步让你做需求分析有理有据》),来了解时序图如何用。

常用的画图工具,有 Visio、ProcessOn ,现在很多在线文档也支持 UML ,如腾讯文档、飞书云文档。

时序图的画法也很简单,一句话就能说完,可是要灵活掌握,还得多加练习。

首先,选定要展开分析的用例或目标;接着,分析都有哪些对象、角色参与了实现过程;然后,将它们在实现目标过程中,彼此之间的交互动作,按照时间轴的顺序列出来。

再简单点,就是定目标、找对象、列消息三步走。

1、定目标

画时序图,与活动图一样,要指定某个用例,或目标展开。这些动态视图,是用来描述在静态视图(如用例图)定义的结构下对象的行为。

本质上,它们都是在描述谁如何参与完成业务目标。

明确了用例或目标,才能保证绘制的流程,边界清晰,过程完整,不会越画越乱。

比如,我们用时序图来分析案例中「 充值话费 」用例的实现过程。这时,就别把「 支付金额 」用例的交互也画进去,把它们画在一起,会增加阅读难度,不利于沟通表达。

△ 案例中「 充值 APP」 的系统用例图

2、找对象

之前的文章已经分析出,案例中,充值得有手机运营商支持;支付得对接微信支付、支付宝;协助用户处理未到账,还需要有运营人员介入。

整个充值 APP ,还应包括管理后台系统 ,才能完成相关的管理操作。

因此,先将它们列出来,每一竖列,表示一个对象或角色,每个对象有一条生命线。

为方便阅读,可将流程中最先发起消息的对象放在最左边;再将交互多的对象摆在附近,别隔太多对象,这样画出来的图会更清晰简洁。

△ 充值 APP 「 充值话费 」用例的相关对象

3、列消息

找到了对象,就可以列出对象间的交互消息。为了方便你回顾 「 充值话费 」用例的实现过程,咱们先上之前已经得出的活动图。

△ 充值 APP 「 充值话费 」用例活动图

工作中,我们把流程弄明白后,就可以边理边画,将对象间的交互,从最先发起的消息,一个个从上往下依次列出。

有些消息有带参数的,可以在描述文字后注明。如下图的第 7 步,充值 APP 生成并提交订单至管理后台,可以在括号里写上订单有哪些字段信息(如订单号、手机号码、购买时间等)。

△ 充值 APP 「 充值话费 」用例对象交互时序图

在 UML 中,时序图的消息是没有序号的。使用中,我发现为每个消息加上序号,比较方便描述与阅读,一直习惯这么用。

「 充值话费 」用例的流程中,刚好有一个并行流程,即上图的第 16 至 20 步。

管理后台在返回支付结果时,还需同步向手机运营商发起充值请求,这是常见的并行流程。

因此,将其画在组合框中,表示这里面上下两部分交互是同时进行的,不分先后。

从这里不难看出,分支一多,时序图会比较难画,也不好理解。

确实,时序图不太适合表达多分支的复杂流程。因此,我们用时序图更多是描述主干流程,复杂的分支可单独抽取出来画,也可以用文字说明。

4、经验之谈

看到上面的泳道活动图和时序图,你可能会想,它们俩还挺像的,工作中究竟用哪个呢?

它们都用于描述不同对象之间的动作。不过,泳道活动图,更侧重于表达谁做了什么事;而时序图,除了强调流程中交互的消息和顺序,还表达谁对谁做了什么事。

我的体会是,遇到强调消息传递、时间顺序的,用时序图;遇到流程比较复杂、分支比较多的,用活动图。

还可以多尝试两种都画,通过不同视角来观察同一个流程,会让我们的理解更加全面、深刻。

实践中,时序图,常用于表达系统的接口请求与反馈消息,更偏向技术实现。

作为产品经理,我们可以从产品视角、操作层面,用它来表达业务流程、产品流程。

这样,开发人员也很好理解,便于他们进行系统设计。

四、总结

信息量还是不少,我给你总结下。

时序图,用来描述多个对象参与实现业务目标时,彼此之间按时间顺序进行交互的过程。常见的应用场景,是在支付领域。

用好时序图,能帮我们,搞清楚业务规则、系统逻辑,提高工作效率。

1、画时序图的方法

1)定目标,指定用例或业务目标展开分析

2)找对象,找出参与实现目标的对象/角色

3)列消息,按时间顺序列出对象的交互消息

2、画时序图的经验

1)给交互消息加序号,方便阅读沟通

2)触发交互的对象画在最左,交互频繁的走近些

3)同一个流程,画不同视图,理解更全面、深刻

时序图,是我分析流程的最爱,有段时间我经常用它,突然灵感闪现,发现了它的高阶玩法,与数据分析结合(感兴趣可看下方的系列文章)。

多加练习吧,相信它也会是你的好帮手!

UML 需求分析系列:

做产品为什么要画这些图?​mp.weixin.qq.com/s?__biz=MzI4NDExMDA4OQ==&mid=2652260749&idx=1&sn=0e7e3ccd2ff5471175ca6968f10ebe24&chksm=f06295ebc7151cfdd156d93a499090cecce38ffaeec7facfb6a8027a459210a0c1bcd99581ef&scene=21#wechat_redirect正在上传…重新上传取消

用例图这样画,3步让你做需求分析有理有据【建议收藏】​mp.weixin.qq.com/s?__biz=MzI4NDExMDA4OQ==&mid=2652262347&idx=1&sn=3ba2b8fe71764d5d57617d0560f40f8c&chksm=f06293adc7151abbb9679e93988df26dcb452dbbb72e2933d97efc58b6559c1faacff48adb71&scene=21#wechat_redirect正在上传…重新上传取消

手把手教你画活动图,再无难搞的流程分析【建议收藏】​mp.weixin.qq.com/s?__biz=MzI4NDExMDA4OQ==&mid=2652262524&idx=1&sn=d9475817b7f0bb575b2ba4f9a01f0729&chksm=f0628c1ac715050c1edef4c08a74f73795dcfe2295aefd00a2a2ae89048ec15c5ae01d90ca87&scene=21#wechat_redirect正在上传…重新上传取消

没想到,B端数据分析还能这样玩,时序图定埋点,订单时长看系统性能​mp.weixin.qq.com/s?__biz=MzI4NDExMDA4OQ==&mid=2652261159&idx=1&sn=f3a8979651e16523847adf078597c88d&chksm=f0629741c7151e57a8396786dd523aec98bb7f11036b4f9260ec3f34de55d76035e3b82d9c6a&scene=21#wechat_redirect正在上传…重新上传取消

一次读书实践的参考作业,藏着产品经理做需求分析的本质,及修炼内功的小方法​mp.weixin.qq.com/s?__biz=MzI4NDExMDA4OQ==&mid=2652261935&idx=1&sn=020a1720d80077c51c938158564d2a5a&chksm=f0629249c7151b5fb414c1613c255d1c550b210161a66619ca742c5f7eb04d397405c90e2463&scene=21#wechat_redirect正在上传…重新上传取消

— END —

数电学习(六、时序逻辑电路)(三) 设计一般步骤:逻辑抽象,状态化简,状态分配,确定触发器类型,画出逻辑图,检查自启动 阅读详情

相关推荐

电路时序波形绘制方法汇总

绘制电路时序波形的方法不同,各有优缺点。因人而异,但用起来舒服,快捷就是最好的方法,追求高效性。 电路时序波形绘制方法1. Visio2. Timegen3. WaveDrom 1. Visio 对于熟练使用Visio的人来说,绘制时序波形和一般的框图没什么区别,这里提供几个模板。强迫症患者使用Visio无疑是最合适的,自己随意设计。 百度网盘: https://pan.baidu.com/s/1w9CfY5YRF8yi-hcQzn5_-A 提取码: 6rj5 2. Timegen 官网:http:/.

Blog Life 1万+

架构设计必备:时序图说明及画法

用途 时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。 梳理业务流程 梳理代码逻辑 元素类型 1.角色(Actor) 用法:系统角色,可以是人或者其他系统,子系统。 画法:以一个小人图标表示。 2.对象(Object) 用法:对象代表时序图中的对象在交互中所扮演的角色...

进击的小白 6万+

Markdown画时序图

时序图是一种用来描述对象之间交互过程的图形工具,主要用于展示各个参与者之间的交互顺序和时间顺序。参与者(Participants):可以是人、类对象、系统等。消息(Messages):表示参与者之间的交互,用箭头表示。激活框(Activation Boxes):表示参与者在处理消息时的活动状态。生命线(Lifelines):表示参与者在交互过程中的存在。

weixin_45326892的博客 1597

时序图怎么画

笔者坚定认为,在绘制任何图形之前,都应该先弄清楚图形的概念、组成元素以及绘制规范。这有助于提升我们的绘图效率。 什么是时序图? 时序图的组成元素 如何绘制时序图?(附微信二维码支付案例) 一、什么是时序图 时序图是UML交互图中的一类,又名序列图、顺序图。 用于描述对象之间的传递消息的时间顺序(包括发送消息、接收消息、处理消息、返回消息等)。 ​ 二、时序图的组成元素 1、对象 对象代表时序图中的对象在交互中所扮演的角色,一般使用矩形表示。 如果对象位于时序图的顶部,说明在交互开始时对象

AlbenXie的博客 3万+

Markdown 进阶技能:用代码画时序图

这篇文章将为大家介绍如何以写代码的方式画时序图(也叫顺序图),同时也会介绍一些时序图基础知识。 相比于使用画图工具拖拽画图,用代码画图有什么好处? 首先,这种方式非常轻便,无需安装复杂的画图应用。Typora 等多种 Markdown 编辑器自带有画图扩展(这也是 Markdown 能画图的原因,因为用到了扩展) 其次,拖拽画图时需要考虑图形尺寸和对齐问题,而代码画图不需要考虑这些,一切均自动调...

weixin_45755202的博客 3582

使用网站websequencediagrams在线画时序图

在线画时序图的网站:https://www.websequencediagrams.com/ 该网站提供拖拉图形和编写脚本代码2个方式来制作时序图,同时提供多种显示风格。 实例: 1、脚本代码: title Automated test data generation tool parallel { user->+tool: Open program ...

aew95547的博客 1191

PUML 画java时序图

使用 PUML 画 Java 时序图的简明指南 在软件开发中,时序图是表现对象之间交互的有效工具,特别是在Java编程领域。时序图可以清晰地展示不同对象如何相互作用,以及随时间变化而发生的事件。本文将介绍如何利用PUML(PlantUML的一种语法)画Java时序图,并提供完整的代码示例。我们还会讨论如何使用Mermaid...

weixin_42148053的博客 612

【系统设计】:画UML时序图的技巧

网站提供了一个在线的IDE, 可以通过代码生成UML图:左上方是代码,红框框起来的是自动生成的UML图。

weixin_54516968的博客 1693

用代码画时序图!绝了!

PlantUML是一个开源项目,可以快速编写UML图的工具。它可以支持编码的方式来生成图形。可以用来画时序图、UML用例图、类图、思维导图、ER图等等。@startumlautonumber@enduml复制代码。

weixin_62421895的博客 3754

记我第一次使用Visio2016画UML时序图(Sequence Diagram)

什么是时序图? 时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。让我们来看一看Visio2016对时序图的的解释。 时序图的元素 我们在画时序图时会涉及到7种元素,这7种元素如下: 其中前6种是比较常用和重要的元素,剩余的最后一种组合片段元素不是很常用,因为比较复杂。所以在此,我只介绍前6种元素...

李阿昀的博客 2万+

VScode 画时序图(FPGA)

(但我用的很简单,只是简单的时序,可以对照这段代码,然后自己试一下,生成下面的图,就知道每段话是什么意思了)3、写好js文件之后,保存之后,按快捷键ctrl+K,再按ctrl+D,就会得到输出的图片,4、可以按鼠标右键,输出图片。

qq_43811597的博客 3354

PlantUML画类图、流程图、时序图使用详解

程序员难免要经常画流程图,状态图,时序图等。以前经常用 visio 画,经常为矩形画多大,摆放在哪等问题费脑筋。有时候修改文字后,为了较好的显示效果不得不再去修改图形。今天介绍的工具是如何使用 PlantUML 的插件画流程图,状态图,时序图等。这是一种程序员看了就会爱上的画图方式:自然,高效。 什么是 PlantUML PlantUML 是一个画图脚本语言,用它可以快速地画出: 流程图 时...

门心叼龙的专栏 9万+

如何让Arduino IDE支持你手里的STM32 nucleo开发板

Arduino IDE开发环境在默认情况下不支持STM32 NUCLEO开发板,只有通过添加附加开发板管理包才能使用。目前为止,只有一部分板子支持使用Arduino IDE开发环境进行开发,分别是 Nucleo F207ZG, Nucleo F429ZI, Nucleo F030R8, Nucleo F091RC, Nucleo F103RB, Nucleo F303RE, Nucl...

mzw72188552的专栏 8972

UML-时序图怎么画?

笔者坚定认为,在绘制任何图形之前,都应该先弄清楚图形的概念、组成元素以及绘制规范。这有助于提升我们的绘图效率。 什么是时序图? 时序图的组成元素 如何绘制时序图?(附微信二维码支付案例) 01 什么是时序图? 时序图是UML交互图中的一类,又名序列图、顺序图。 用于描述对象之间的传递消息的时间顺序(包括发送消息、接收消息、处理消息、返回消息等)。 来源:亿图图示模板社区 02 时序图的组成元素 1)对象 对象代表时序图中的对象在交互中所扮演的角色,一般使用矩形表示。 如果对象位.

Edraw_Max的博客 1万+

如何使用superpowers

"这个 bug 帮我修一下" → 我会自动走 systematic-debugging → TDD → verify 流程。- "帮我添加一个登录功能" → 我会自动走 brainstorming → plan → TDD → verify 流程。只要任务有 1% 的可能性适用某个技能,我就会先调用它再行动。→ TDD(测试驱动开发)→ verification(验证)→ code review(代码审查)提出需求 → brainstorming(头脑风暴)→ writing-plans(编写计划)

xiaojingjianqiang的博客 610

Setup&Hold互卡问题和Useful Skew的影响

setup和hold互卡问题分析

godping的博客 5093

AndroidStudio插件之PlantUML integration 画时序图

编写程序文档,往往需要画一些核心时序图,下面介绍一款AndroidStudio 的插件PlantUML integration,可用于画时序图。 1、打开AndroidStudio,依次点击AndroidStudio -> Preferences -> Plugins,在搜索框搜索并安装即可。 2、接下来新建一个MUL文件 3、给文件取名,并且选择时序图Sequence 4、默认情况下,出现这个视图 5、此时就可以开始画图了。@startuml和@enduml之间就是写uml语法的区域,

weixin_43979538的博客 4430

高通camx ThreadManager

m_pCore->AcceptNewJob是将一个Job或者任务插入一个Queue,有一个工作线程循环从Queue中取Job任务执行,执行任务就是回调任务中的callback函数,AcceptNewJob实现。调用AddToPriorityQueue将任务添加到queue任务队列,那么什么时候从这个queue中取任务执行呢?有个线程循环执行DoWork,最终调用checkAndDequeue取任务执行。

GetnextWindow的专栏 435

画时序图工具

如何画时序图 推荐一个网站,waveform,非常好用。 当然,也有人用Visio。

the__future的博客 855

【Java】对接微信转账到零钱接口 Java微信商家转账 apiV3(该踩的雷都踩了)

配置apiv3依赖java代码。

Moonhwa的博客 4318

AFE芯片做什么用的?AFE(Analog Front End) 模拟前端

AFE采样精度的影响因素非常多,需要综合考虑各种因素,并根据实际应用场景来选择合适的参数和方法。通过减少噪声、提高采样频率、调节放大器增益、降低电源噪声、优化传输线路、进行温度补偿、选择合适的ADC分辨率、根据信号类型选择合适的AFE参数、进行器件匹配和校准等方法,可以提高AFE的采样精度,从而更好地满足各种应用需求。版权声明:本文为优快云博主「czf.Forver」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

学海无涯的专栏 4万+

PlantUML 画时序图常用代码

本文是我画时序图经常使用的“模式”,更详细的语法可以 plantuml.com 查看 什么工具? VSCode PlantUML 插件 1. 请求、回调、渲染 @startuml participant c as "Client" participant s as "Server" c -> s: fetch activate s c -> c: render ...

weixin_33843947的博客 834

从零到一:PrimeTime静态时序分析入门指南

本文详细介绍了PrimeTime静态时序分析(STA)的入门指南,从基础概念到实际应用全面覆盖。内容包括时序路径分类、PrimeTime环境搭建、时序约束设置与验证、时序分析与报告解读等核心内容,帮助工程师快速掌握STA技术,解决数字芯片设计中的时序收敛问题。

weixin_28730131的博客 268

【免费下载】 高效绘制FPGA时序图:VISIO画FPGA时序图工具包推荐

高效绘制FPGA时序图:VISIO画FPGA时序图工具包推荐 【下载地址】VISIO画FPGA时序图工具包 本仓库提供了一个用于在Microsoft Visio中绘制FPGA时序图的工具包。该工具包旨在简化FPGA时序图的绘制过程,使其更加高效和直观。无论您是FPGA设计新手还是经验丰富的工程师,这个工具包都能帮助您快速...

gitblog_09732的博客 1787

YOLOv9改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 1364

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

介绍两个免费画时序图的网站

介绍两个免费画时序图的网站

liuruiaaa的博客 790

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: 代码规范及单元测试覆盖率
下一篇: springboot多数据源根据开关控制方法访问的数据源
bxp1321
博客等级 码龄17年 146粉丝 86原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值