<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      springboot~stateless4j實現狀態機

      狀態機,包括了狀態和動作,某個狀態下,只能執行某些動作,如果動作不匹配,狀態是不會進行變更了,這樣就保護了我們狀態字段的準備性,不能隨意改變,必須按著我們設計的規則進行狀態的輪轉。

      Stateless實現的狀態機

      1. Stateless:Stateless 是一個簡單且易于使用的狀態機庫,它提供了基本的狀態轉換和動作執行功能。以下是一個使用 Stateless 實現的簡單狀態機示例:
      import com.github.oxo42.stateless4j.StateMachine;
      import com.github.oxo42.stateless4j.StateMachineConfig;
      import com.github.oxo42.stateless4j.transitions.Transition;
      
      public class StateMachineExample {
      enum State {
      
      		/**
      		 * 表示電話機已經從底座拿起,但用戶還沒有撥打或者接聽電話,此時電話處于空閑狀態
      		 */
      		OFF_HOOK,
      		/**
      		 * 響鈴
      		 */
      		RINGING,
      		/**
      		 * 連接
      		 */
      		CONNECTED,
      		/**
      		 * 表示通話的一方需要暫時掛起通話
      		 */
      		ON_HOLD
      
      	}
      
      	enum Trigger {
      
      		/**
      		 * 用戶撥打電話并等待接聽
      		 */
      		CALL_DIALED,
      		/**
      		 * 表示通話結束后掛斷電話
      		 */
      		HUNG_UP,
      		/**
      		 * 表示接聽方接通電話,此時雙方正常通話。
      		 */
      		CALL_CONNECTED,
      		/**
      		 * 表示通話的一方需要暫時掛起通話
      		 */
      		PLACED_ON_HOLD,
      		/**
      		 * 表示恢復保持狀態執行通話【與PLACED_ON_HOLD對應】
      		 */
      		TAKEN_OFF_HOLD,
      		/**
      		 * 留言
      		 */
      		LEFT_MESSAGE,
      		/**
      		 * 表示通話的一方結束通話并停止使用電話
      		 */
      		STOP_USING_PHONE
      
      	}
      
          public static void main(String[] args) {
              // 創建狀態機配置
              StateMachineConfig<State, Trigger> config = new StateMachineConfig<>();
      
              // 定義狀態轉換規則
              config.configure(State.OFF_HOOK)
                      .permit(Trigger.CALL_DIALED, State.RINGING);
      
              config.configure(State.RINGING)
                      .permit(Trigger.HUNG_UP, State.OFF_HOOK)
                      .permit(Trigger.CALL_CONNECTED, State.CONNECTED);
      
              config.configure(State.CONNECTED)
                      .permit(Trigger.LEFT_MESSAGE, State.OFF_HOOK)
                      .permit(Trigger.HUNG_UP, State.OFF_HOOK)
                      .permit(Trigger.PLACED_ON_HOLD, State.ON_HOLD);
      
              config.configure(State.ON_HOLD)
                      .permit(Trigger.TAKEN_OFF_HOLD, State.CONNECTED)
                      .permit(Trigger.HUNG_UP, State.OFF_HOOK);
      
              // 創建狀態機實例
              StateMachine<State, Trigger> stateMachine = new StateMachine<>(State.OFF_HOOK, config);
      
              // 執行狀態轉換
              stateMachine.fire(Trigger.CALL_DIALED);
              stateMachine.fire(Trigger.CALL_CONNECTED);
              stateMachine.fire(Trigger.PLACED_ON_HOLD);
              stateMachine.fire(Trigger.TAKEN_OFF_HOLD);
              stateMachine.fire(Trigger.HUNG_UP);
      
              // 獲取當前狀態
              State currentState = stateMachine.getState();
              System.out.println("Current State: " + currentState);
          }
      }
      

      在上面的示例中,我們使用 StateMachine 類創建了一個狀態機,并定義了狀態(State)和觸發器(Trigger)。通過配置狀態轉換規則,我們可以使用 fire() 方法觸發狀態轉換。最后,我們獲取當前狀態并輸出。

      posted @ 2023-06-25 16:07  張占嶺  閱讀(803)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国内精品久久久久影院网站| 久久午夜夜伦鲁鲁片免费无码 | 免费无码肉片在线观看| 国产毛片精品一区二区色| 亚洲综合一区二区三区不卡| 亚洲人成网站在线播放2019| 午夜免费无码福利视频麻豆| 精品国产美女av久久久久| 偷柏自拍亚洲综合在线| 安塞县| 狠狠色丁香婷婷综合尤物| 国产一区二区三区色成人| 又爽又黄又无遮掩的免费视频| 久久精品不卡一区二区| 久久久av男人的天堂| 久久精品国产亚洲AV麻| 精品乱人伦一区二区三区| 国产精品久久国产精品99 gif| 亚洲av成人一区二区三区| 国产久久热这里只有精品| 真实国产乱子伦视频| 1精品啪国产在线观看免费牛牛| 色综合 图片区 小说区| 日本人成精品视频在线| 国产一区日韩二区三区| 国产精品最新免费视频| 4399理论片午午伦夜理片| 亚洲另类丝袜综合网| 国产一区二区三区无遮挡| 亚洲熟女乱综合一区二区三区| 一区二区福利在线视频| 亚洲精品中文字幕二区| 97午夜理论电影影院| 亚洲一区成人av在线| 免费看黄片一区二区三区| 亚洲AV国产福利精品在现观看| 日韩a无v码在线播放| 毛片内射久久久一区| 免费无码一区二区三区蜜桃大| 成人亚欧欧美激情在线观看| 东京热人妻丝袜无码AV一二三区观|