小明永久免费大陆在线观看-小明永久免费视频-小明永久视频免费播放-小嫩妇好紧好爽再快视频-小嫩嫩12欧美-小日本xxx

首頁(yè) 理財(cái) > 正文

springboot~stateless4j實(shí)現(xiàn)狀態(tài)機(jī)_全球頭條


(資料圖片僅供參考)

狀態(tài)機(jī),包括了狀態(tài)和動(dòng)作,某個(gè)狀態(tài)下,只能執(zhí)行某些動(dòng)作,如果動(dòng)作不匹配,狀態(tài)是不會(huì)進(jìn)行變更了,這樣就保護(hù)了我們狀態(tài)字段的準(zhǔn)備性,不能隨意改變,必須按著我們設(shè)計(jì)的規(guī)則進(jìn)行狀態(tài)的輪轉(zhuǎn)。

Stateless實(shí)現(xiàn)的狀態(tài)機(jī)

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

在上面的示例中,我們使用 StateMachine類(lèi)創(chuàng)建了一個(gè)狀態(tài)機(jī),并定義了狀態(tài)(State)和觸發(fā)器(Trigger)。通過(guò)配置狀態(tài)轉(zhuǎn)換規(guī)則,我們可以使用 fire()方法觸發(fā)狀態(tài)轉(zhuǎn)換。最后,我們獲取當(dāng)前狀態(tài)并輸出。

關(guān)鍵詞:

最近更新

關(guān)于本站 管理團(tuán)隊(duì) 版權(quán)申明 網(wǎng)站地圖 聯(lián)系合作 招聘信息

Copyright © 2005-2023 創(chuàng)投網(wǎng) - m.zhigu.net.cn All rights reserved
聯(lián)系我們:39 60 29 14 [email protected]
皖I(lǐng)CP備2022009963號(hào)-3

亚洲成av人在线观看网站 | 四虎国产精品永久在线无码 | 无码内射中文字幕岛国片 | 天天综合天天爱天天做 | 强伦人妻一区二区三区视频18 | 精品欧美一区二区精品久久 | 国产精品久久久久久久久软件 | 日日噜噜夜夜狠狠久久无码区 | 亚洲精品无人区 | 亚洲国产精品久久精品 | 亚洲av无码一区二区三区18 | 亚洲码国产精品高潮在线 | 欧美成人一区二区三区在线视频 | 天堂av亚洲av国产av电影 | 91午夜精品亚洲一区二区三区 | 欧美成人一区二区三区在线视频 | 亚洲av成人精品一区二区三区 | 内射人妻少妇无码一本一道 | 国产乱色精品成人免费视频 | 国产一区二区久久 | 内射毛片内射国产夫妻 | 国产特黄级aaaaa片免 | 午夜成人理论无码电影在线播放 | 国产亚洲av片在线观看播放 | 优优人体大尺大尺无毒不卡 | 天天躁日日躁狠狠很躁 | 精品无码成人久久久久久 | 毛片24种姿势无遮无拦 | 日韩精品中文字幕无码一区 | 99ri国产在线观看 | 毛片在线免费视频 | 草莓视频成人 | 亚洲国产激情一区二区三区 | 狠狠色丁香婷婷久久综合 | 日日碰狠狠添天天爽超碰97久久 | 国内自拍 亚洲系列 欧美系列 | 国产丰满麻豆videossexhd 国产成人精品综合久久久久 | 久久人妻少妇嫩草av | 337p日本欧洲亚洲大胆色噜噜 | 亚洲精品无码久久久久去q 久久久久人妻精品一区二区三区 | 国产一级一片免费播放 |