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()結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM