中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

squirrel-foundation有限狀態機的詳細介紹

發布時間:2021-09-04 11:50:32 來源:億速云 閱讀:728 作者:chen 欄目:大數據

這篇文章主要講解了“squirrel-foundation有限狀態機的詳細介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“squirrel-foundation有限狀態機的詳細介紹”吧!

什么是有限狀態機

有限狀態機:是一種用來進行對象行為建模的工具,其作用主要是描述對象在它的生命周期內所經歷的狀態序列,以及如何響應來自外界的各種事件。在計算機科學中,有限狀態機被廣泛用于建模應用行為、硬件電路系統設計、軟件工程,編譯器、網絡協議、和計算與語言的研究

本文主要學習java的一個開源實現 squirrel-foundation 狀態機

狀態機的要素

1
現態、條件、動作、次態。“現態”和“條件”是因,“動作”和“次態”是果

為什么使用狀態機

一般來說,隨著項目的發展,代碼變得越來越復雜,狀態之間的關系,轉化變得越來越復雜,比如訂單系統狀態,活動系統狀態等。產品或者開發很難有一個人能夠梳理清楚整個狀態的全局. 使用狀態機來管理對象生命周期可以使得代碼具有更好的可讀性,可維護性,以及可測試性。

1
有限狀態機是一種對象行為建模工具,適用對象有一個明確并且復雜的生命流(一般而言三個以上狀態),并且在狀態變遷存在不同的觸發條件以及處理行為。

先來看squirrel-foundation github 上面給出的例子,對狀態機有一個直觀的認識



demo

添加maven 依賴

1
2
3
4
5
6
<!-- 狀態機-->
<dependency>
    <groupId>org.squirrelframework</groupId>
    <artifactId>squirrel-foundation</artifactId>
    <version>0.3.8</version>
</dependency>

QuickStartSample demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import org.squirrelframework.foundation.fsm.StateMachineBuilderFactory;
import org.squirrelframework.foundation.fsm.UntypedStateMachine;
import org.squirrelframework.foundation.fsm.UntypedStateMachineBuilder;
import org.squirrelframework.foundation.fsm.annotation.StateMachineParameters;
import org.squirrelframework.foundation.fsm.impl.AbstractUntypedStateMachine;

/**
 * @Author wtx
 * @Date 2019/5/5
 */
public class QuickStartSample {
    // 1. Define State Machine Event
    enum FSMEvent {
        ToA, ToB, ToC, ToD
    }

    // 2. Define State Machine Class
    @StateMachineParameters(stateType=String.class, eventType=FSMEvent.class, contextType=Integer.class)
    static class StateMachineSample extends AbstractUntypedStateMachine {
        protected void fromAToB(String from, String to, FSMEvent event, Integer context) {
            System.out.println("Transition from '"+from+"' to '"+to+"' on event '"+event+
                    "' with context '"+context+"'.");
        }

        protected void ontoB(String from, String to, FSMEvent event, Integer context) {
            System.out.println("Entry State \'"+to+"\'.");
        }
    }

    public static void main(String[] args) {
        // 3. Build State Transitions
        UntypedStateMachineBuilder builder = StateMachineBuilderFactory.create(StateMachineSample.class);
        builder.externalTransition().from("A").to("B").on(FSMEvent.ToB).callMethod("fromAToB");
        builder.onEntry("B").callMethod("ontoB");

        // 4. Use State Machine
        UntypedStateMachine fsm = builder.newStateMachine("A");
        fsm.fire(FSMEvent.ToB, 10);

        System.out.println("Current state is "+fsm.getCurre5ntState());
    }
}

定義StateMachineBuilderFactory

首先使用StateMachineBuilderFactory構造一個UntypedStateMachineBuilder,然后builder.externalTransition(),builder除了externalTransition還有internalTransition(),

.from(“A”).to(“B”).on(FSMEvent.ToB).callMethod(“fromAToB”);
當狀態在A 發生 ToB 事件時,調用 方法fromAToB,然后狀態轉化到 B。
builder.onEntry(“B”).callMethod(“ontoB”);
當狀態轉移到B 時,調用方法ontoB。

構造UntypedStateMachine fsm

1
2
3
UntypedStateMachine fsm = builder.newStateMachine("A");
// 觸發ToB事件
fsm.fire(FSMEvent.ToB, 10);

獲取當前狀態

1
fsm.getCurrentState()

感謝各位的閱讀,以上就是“squirrel-foundation有限狀態機的詳細介紹”的內容了,經過本文的學習后,相信大家對squirrel-foundation有限狀態機的詳細介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

格尔木市| 永善县| 扶余县| 贺兰县| 北川| 乌鲁木齐市| 芦山县| 舞阳县| 牟定县| 兴山县| 客服| 岳普湖县| 日照市| 海晏县| 永城市| 华亭县| 怀宁县| 宿松县| 浏阳市| 马龙县| 朔州市| 霍州市| 深州市| 炎陵县| 黔西县| 彝良县| 始兴县| 巨野县| 德州市| 西城区| 洛扎县| 安徽省| 遂平县| 印江| 绥江县| 禹城市| 土默特左旗| 湛江市| 尚义县| 内江市| 买车|