微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

markdown mermaid状态图

状态图

状态图是一种用于计算机科学和相关领域描述系统行为的图。状态图要求描述的系统由有限数量的状态组成。

语法:

stateDiagram-v2
    [*] --> Still
    Still --> [*]

    Still --> Moving:push
    Moving --> Still:摩擦
    Moving --> Crash:速度过快
    Crash --> [*]
stateDiagram-v2 [*] --> Still Still --> [*] Still --> Moving:push Moving --> Still:摩擦 Moving --> Crash:速度过快 Crash --> [*]

在状态图中,展示了系统有那些状态,以及状态之间相互转换的。 上面的示例图显示Still、MovingCrash 三种状态。 可以将Still状态 更改为 Moving。 也可以将Moving状态更改回StillCrash。 但无法从Still过度到Crash 状态。

  1. 状态

可以通过多种方式声明一个状态。 最简单的方法是状态定义是通过 id 。

stateDiagram-v2
    id
stateDiagram-v2 id

定义状态的另一种方法是,状态id后接冒号和描述。

stateDiagram-v2
	S:开始
	R:运行
	W:等待
	
	S-->R:start()
	R-->W:wait()
	W-->R:notify(),nofityAll()
stateDiagram-v2 S:开始 R:运行 W:等待 S-->R:start() R-->W:wait() W-->R:notify(),nofityAll()

id:des :状态id:状态详细

如果状态比较长,并且要多次引用,可以用此种方式,可以减少敲打键盘的的次数

  1. 过渡:状态转换

当一种状态进入另一种状态时,通过过渡转换。 这使用文本箭头-->表示。

stateDiagram-v2
	状态1 --> 状态2
stateDiagram-v2 状态1 --> 状态2

可以向过渡中添加文本。描述它代表什么。

stateDiagram-v2
	new-->Runable:start()
stateDiagram-v2 new-->Runable:start()
  1. 开始和结束

有两种特殊状态指示图,开始和停止。 可以用 [*] 语法表示开始或停止状态。

stateDiagram-v2
    [*] --> 运行
    s1 --> [*]
stateDiagram-v2 s1:运行 [*] --> s1 s1 --> [*]

例子:

Java线程状态图:

stateDiagram-v2
New-->Runnable:start()

Runnable-->Waiting:wait()
Waiting-->Runnable:notify(),notifyAll()

TimedWaiting-->Runnable:sleep()结束
Runnable-->TimedWaiting:sleep()开始

Blocked-->Runnable:synchronized
Runnable-->Blocked:synchronized


Runnable-->Terminated:run()结束
stateDiagram-v2 New-->Runnable:start() Runnable-->Waiting:wait() Waiting-->Runnable:notify(),notifyAll() TimedWaiting-->Runnable:sleep()结束 Runnable-->TimedWaiting:sleep()开始 Blocked-->Runnable:synchronized Runnable-->Blocked:synchronized Runnable-->Terminated:run()结束

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐