狀態機模式

2021-10-12 12:24:42 字數 389 閱讀 4039

狀態機又叫有限狀態機,它有 3 個部分組成:狀態、事件、動作。其中,事件也稱為轉移條件。事件觸發狀態的轉移及動作的執行。不過,動作不是必須的,也可能只轉移狀態,不執行任何動作。

針對狀態機,有三種實現方式。

第一種實現方式叫分支邏輯法。利用 if-else 或者 switch-case 分支邏輯,參照狀態轉移圖,將每乙個狀態轉移原模原樣地直譯成**。對於簡單的狀態機來說,這種實現方式最簡單、最直接,是首選。

第二種實現方式叫查表法。對於狀態很多、狀態轉移比較複雜的狀態機來說,查表法比較合適。通過二維陣列來表示狀態轉移圖,能極大地提高**的可讀性和可維護性。

第三種實現方式叫狀態模式。對於狀態並不多、狀態轉移也比較簡單,但事件觸發執行的動作包含的業務邏輯可能比較複雜的狀態機來說,我們首選這種實現方式。

狀態機 狀態機0

近半年都忙於做專案,沒有太多的時間去整理和總結在專案中用過的技術 個人還是覺得技術需要總結提煉和沉澱的,忙到沒時間去總結提公升其實不 是什麼好事,這次講下狀態機,在戰鬥型別的遊戲中角色有多種不同的狀態,而狀態的切換錯綜複雜,23種設計模式中有一種模式叫做狀態模式,不過 這種模式是把狀態切換條件放到各...

狀態機模式實戰

最近在為澳洲一家保險公司做web應用,在乙個收集使用者位址資訊的頁面中,我遇到了乙個問題 1.當使用者輸入正確的位址,通過驗證。2.當使用者第一次輸入錯誤的位址,不通過。3.當使用者第二次輸入,不論正確與否,都將通過。當面對這樣的需求的時候,我立馬有了解決方案,首先要有乙個全域性變數來儲存他輸入的位...

python 狀態機 Python 狀態機

class statemachine def init self self.handlers 狀態轉移函式字典 self.startstate none 初始狀態 self.endstate 最終狀態集合 引數name為狀態名,handler為狀態轉移函式,end state表明是否為最終狀態 de...