java状态机的一种优雅写法

文章介绍了如何使用Java优雅地实现状态机,避免了大量的if-else语句。通过定义StateTransaction类表示状态转换,使用链式初始化方法简化对象创建。同时,定义了Event接口处理事件响应,以及两个枚举类表示状态和动作。在StateMachine类中管理状态转移,实现了状态的动态切换。示例代码展示了如何创建和执行状态转换。
摘要由CSDN通过智能技术生成

状态机是一种数学模型,对于我们业务实现有很大的帮助。

我们可以用非常多的方法实现状态机,比如用茫茫多的if-else来进行条件判断,但是这种原始的方法并不够优雅,这篇文章就来介绍一个状态机优雅的实现方法。

话不多说,直接进入正题。

假设我们有两个状态

 

这个状态转换非常简单,我们来试着用java实现一下

程序结构如下图

我们先来介绍一下状态的表示

public class StateTransaction {

    // 当前状态
    private StateEnum currentState;
    // 相对应动作
    private ActionEnum action;
    // 下一个状态
    private StateEnum nextState;
    // 相应事件
    private Event event;

    public StateTransaction() {

    }

    public StateEnum getCurrentState() {
        return currentState;
    }

    public ActionEnum getAction() {
        return action;
    }

    public StateEnum getNextState(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值