首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用Java枚举实现简单的状态机

利用Java枚举实现状态机的想法比较新颖,在某些场景下用处也很大,看了一篇文章不错翻译在此。...概述 本文讲述利用Java枚举实现简单的状态机。我们也会对比使用这种方法和接口和具体类方式的优势。 2. Java枚举 Java是一个定义了一系列常亮的特殊类。枚举类型更安全,可读性也更高。...Java枚举隐式继承自class java.lang.Enum,因此它们就不能再继承其他类了。不过它们像其他类一样,可以实现其他接口。...枚举实现状态机的优势 通过类或者接口方式实现状态机代码量非常大而且不容易维护。 而Java枚举则是一种简化的形式,是一个常量列表,可以用来定义状态。...结论 本文主要讲述如何使用Java的枚举来实现状态机并给出了代码和测试案例。 最后讨论了相对于接口或者普通类来说枚举实现状态机的优势。

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    状态机

    这篇文章并不刻意介绍状态机的学术概念,只想谈谈状态机的实际运用。如果想看系统性的学术介绍的话,可以查看百度百科。 百度百科:状态机 应用场景 同学们在工作中,有没有遇到过类似这样的代码。...状态机模式就是用于处理这样一种复杂的逻辑判断结构的设计模式。 结构分析 在实现状态机时: 一个条件分支可以认为是一种状态(state)。...以上也就是状态机的四大概念:state、event、action、transition。 用法示例 假如业务想要做一个下滑翻屏的 Swiper 页面,每一屏都有不同的内容和动画。...为了提高性能,我们希望用户进入该屏时,再播放该屏的动画,此时就可以使用状态机来实现这一场景。

    62120

    状态机

    一、如何实现一个状态机? 首先需要考虑涉及到哪些状态节点和哪些事件,如何方便状态节点的获取、状态节点如何串联起来呢?串联的方式下,如何拿到下一个状态节点?如果基于角色,如何实现?...我们知道工作流可以实现基于角色进行流程的流转,但是此时我们涉及到事件和状态,会出现多个分支,如果使用工作流实现,流程处理上,比如activiti上,可能比较复杂,因此考虑比较轻量级的状态机来实现的话,相对来说要方便一些...: 构建状态机 注册状态机 展示状态机 展示状态机uml 节点操作: 基于node的数据结构进行构建,配合使用from、to、condtion、link with设置对应的布局 使用状态的步骤: 创建...操作,fire的过程中拿到下一个状态节点setNextState(source,request) 二、状态机信息流程 可以参考COLA里面的test,可以看到COLA的具体代码实现。...三、展示状态机信息效果 总体来说cola的状态机还是蛮实用的。 基于cola的状态机还可以实现复杂的状态-事件流转。如下图所示: 四、状态机的使用场景 审批流程、订单状态流转等。

    1.1K20

    Java 实现有限状态机的推荐方案

    一、背景 平时工作开发过程中,难免会用到状态机,即状态的流转。 下面是一个简单的模拟状态机: 有些同学会定义为常量,使用 if else 来流转状态,不太优雅。...package basic; import lombok.Getter; import java.util.Arrays; import java.util.Map; import java.util.function.Function...状态机的每次转换是一个 State 到另外一个 State 的映射,每次获取下一个状态都是传如当前状态。 因此我们可以联想到使用 Map 来存储这种映射 。...以下结合 Map 的数据结构,结合链式编程,给出一个解决方案: package basic; import java.util.HashMap; import java.util.Map; public...三、总结 本文结合自己的理解,给出一种推荐的有限状态机的写法。 给出了自有状态枚举和外部状态枚举的解决方案,希望对大家有帮助。 通过本文,大家也可以看出,简单的问题深入思考,也可以得到不同的解法。

    1.7K10

    Java 实现有限状态机的推荐方案

    一、背景 平时工作开发过程中,难免会用到状态机(状态的流转)。 如奖学金审批状态流转、请假审批状态流转、竞标状态流转等,都需要根据不同行为转到不同的状态。...下面是一个简单的模拟状态机: 有些同学会选择将状态定义为常量,使用 if else 来流转状态,不太优雅。 ---- 有些同学会考虑将状态定义为枚举。...package basic; import lombok.Getter; import java.util.Arrays; import java.util.Map; import java.util.function.Function...以下结合 Map 的数据结构,结合升级版的 Builder 设计模式,实现链式编程: package basic; import java.util.HashMap; import java.util.Map...可能还有一些开源的包提供状态机的功能,但核心原理大同小异。 三、总结 本文结合自己的理解,给出一种推荐的有限状态机的写法。 给出了自有状态枚举和外部状态枚举的解决方案,希望对大家有帮助。

    1.6K10

    Spring状态机

    有限状态机简称就是状态机,因为一般的状态机的状态都是离散和可举的,即为有限,所以后面的介绍都不加有限二字。状态机表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。...通俗的描述状态机就是定义了一套状态変更的流程:状态机包含一个状态集合,定义当状态机处于某一个状态的时候它所能接收的事件以及可执行的行为,执行完成后,状态机所处的状态。...所以状态机会包含以下几个重要的元素: State:状态。一个标准的状态机最少包含两个状态:初始和终态。初态是状态机初始化后所处的状态,而终态顾名思义就是状态机结束时所处的状态。...标准的状态机还会涉及到一些中间态,存在中间态的状态机流程就会比较复杂(用处也不是特别大,而且可以通过其他方式实现),所以在目标实现的状态机里不会引入这个概念。 Event:事件。...CREATED, WAITINF_FOR_RECEIVE, FINISHED } public enum OrderEvents { PAY, RECEIVE } 设置一个状态机配置

    1.8K30

    (有限)状态机

    基础 状态机是最基本的设计模式。 而我们常常说的状态机指有限状态机,缩写是FSM(Finite State Machine)。...无限状态机仅仅是理论上存在的概念,比如,把1/3变成一个状态机的话,那这个状态就是无限循环了,实际上没啥实际的应用意义。 我们常说的状态机指有限状态机。...不夸张的说,状态机模型是世界运行的基础,大脑做的决策推演,在火星上运行的祝融号,计算机软件的底层设计,游戏中的沙雕AI,其底层逻辑都是状态机。...有限状态机的定义:有限个状态及在这些状态之间的转移和动作等行为的数学模型;在计算机科学中,状态机的关键要素是状态和状态的转移。...回到程序设计的话题,要设计一个通用的状态机程序,只用switch,case肯定是不够的; 当然,不管是用哪种语言,只要把握住状态机的三个核心要素即可,即: 状态(state ):当前处于哪种状态

    2.4K20

    ASIO 状态机

    在ASIO的工作流程中,状态机的概念被用来管理音频流的各个阶段,确保数据的连续性和同步性。本文将详细介绍ASIO状态机的工作原理、实现方式以及在音频处理中的应用。1....ASIO状态机的工作原理ASIO状态机通过定义一系列的状态和状态转换来管理音频流的生命周期。...状态机的实现需要处理以下几个关键方面:状态转换:状态机需要能够根据外部事件(如用户输入、硬件中断等)在不同状态之间转换。事件处理:状态机需要能够响应和处理各种事件,如缓冲区溢出、硬件故障等。...ASIO状态机在音频处理中的应用在音频处理中,ASIO状态机的应用主要体现在以下几个方面:实时音频处理:ASIO状态机确保音频数据的实时处理,满足专业音频应用对低延迟的要求。...ASIO状态机的优化为了提高ASIO状态机的性能和稳定性,可以采取以下优化措施:减少状态转换:尽量减少不必要的状态转换,以降低状态机的复杂性和延迟。

    78000

    状态机设计举例

    2.ASM图中各种逻辑框之间的时间关系 3.十字路口交通灯控制电路设计举例 状态机设计准则 FSM输出方法 有限状态机HDL描述规则 可靠性与容错性 汽车尾灯控制电路设计 重点介绍构造状态图的两种方法:...一是试探法,二是基于算法状态机构造状态图的方法。...应用算法状态机设计十字路口交通灯控制电路 算法状态机ASM(Algorithmic State Machine)图是描述数字系统控制算法的流程图。...状态机的设计要满足设计的面积和速度的要求; 状态机的设计要清晰易懂、易维护. FSM输出方法 ONE HOT编码 使用N位状态寄存器表达具有Ng 状态的FSM,每个状态具有独立的寄存器位。...有限状态机HDL描述规则 单独用一个模块来描述一个有限状态机。这样易于简化状态的定义、调试和修改;同时,也可使用EDA工具来进行综合与优化。

    82230

    简单的状态机入门!

    所以今天的文章只是带大家入门和了解一下状态机,等你真正在工作当中有遇到这个状态机作为开发需要的话,你再去深入研究。 一、什么是状态机?...1、有限状态机: 常说的状态机是有限状态机FSM(Finite State Machine)。...2、考虑状态机的关键点: 从刚才的定义来看,我们只要抓住状态机的关键点来理解就行: 1、外部输入 2、当前状态 3、下一个状态 二、两种状态机类型: (1)Moore型状态机特点是:输出只与当前状态有关...状态机接收到一个输入信号需要跳转到下一个状态时,状态机综合考虑2个条件(当前状态、输入值)后才决定跳转到哪个状态。 三、状态机的常见用途: (1)电路设计中广泛使用了状态机思想。...五、实战例子: 开锁状态机

    66210

    设计模式-状态机模式

    模型图 [image.png] 涉及的角色及说明 何为有限状态机 有限状态机在维基百科中的解释是: 有限状态机(...英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。...咋一看好像很虚幻,我们先看一下地铁运营的例子: [image.png] 站在有限状态机的角度来看,可以抽象如下几个关键点: 状态(State) 即地铁所处的状态,同上述例子的:“行进中”...在状态机初始化时创建 [image.png] 说明: 状态A 有三种动作,每个动作都是由某个具体事件触发, 一个事件只能触发一个动作 事件 public...每个事件都有注册事件监听程序 [image.png] 借鉴 什么场景适合使用状态机模式?

    4.1K00

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券