Java枚举还有这种用法吗?

2026-06-10 18:040阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1192个文字,预计阅读时间需要5分钟。

Java枚举还有这种用法吗?

前言:众多Java开发者编写过状态变化频繁的业务,例如订单流程、请假流程等。通常会用一个状态标识来标记生命周期的某个阶段。很多人会这样写逻辑:如果流程几十个步骤,就不需要if到死。

前言

相信不少java开发者写过状态变更的业务,比如订单流程、请假流程等等。一般会搞一个状态标识来标识生命周期的某个阶段。很多人会写这种逻辑:

如果流程几十个岂不是要if到爆炸。还有这“0”、“1”是几个意思?

优化的办法当然可以使用设计模式中的状态模式来搞,允许一个具有状态的对象根据其状态封装同一对象的不同行为。我们可以编程状态之间的转换,然后定义单独的状态:

但是这种操作会增加过多的状态对象依赖。那么有没骚操作呢?当然有。我们先来了解了解状态机。

状态机

状态机全称有限状态机,因为一般的状态机的状态都是离散而且可枚举的,这就是有限的原因。状态机表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。通俗的描述状态机就是定义了一套状态変更的流程:状态机包含一个状态集合,定义当状态机处于某一个状态的时候它所能接收的事件以及可执行的行为,执行完成后,状态机所处的状态变化可以被感知。一般包含以下几个概念:

  • 状态 太废话了我,状态机没有状态还能叫状态机。
  • 事件 状态机的状态变更肯定是通过触发一个事件引起的。
  • 行为 触发了之后执行的业务逻辑。比如说订单未支付状态到支付状态的变更需要走的业务,写流水、修改账户余额等。
  • 变更 一个状态被一个事件触发执行了某些行为到达了另外一个状态的过程。
阅读全文

本文共计1192个文字,预计阅读时间需要5分钟。

Java枚举还有这种用法吗?

前言:众多Java开发者编写过状态变化频繁的业务,例如订单流程、请假流程等。通常会用一个状态标识来标记生命周期的某个阶段。很多人会这样写逻辑:如果流程几十个步骤,就不需要if到死。

前言

相信不少java开发者写过状态变更的业务,比如订单流程、请假流程等等。一般会搞一个状态标识来标识生命周期的某个阶段。很多人会写这种逻辑:

如果流程几十个岂不是要if到爆炸。还有这“0”、“1”是几个意思?

优化的办法当然可以使用设计模式中的状态模式来搞,允许一个具有状态的对象根据其状态封装同一对象的不同行为。我们可以编程状态之间的转换,然后定义单独的状态:

但是这种操作会增加过多的状态对象依赖。那么有没骚操作呢?当然有。我们先来了解了解状态机。

状态机

状态机全称有限状态机,因为一般的状态机的状态都是离散而且可枚举的,这就是有限的原因。状态机表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。通俗的描述状态机就是定义了一套状态変更的流程:状态机包含一个状态集合,定义当状态机处于某一个状态的时候它所能接收的事件以及可执行的行为,执行完成后,状态机所处的状态变化可以被感知。一般包含以下几个概念:

  • 状态 太废话了我,状态机没有状态还能叫状态机。
  • 事件 状态机的状态变更肯定是通过触发一个事件引起的。
  • 行为 触发了之后执行的业务逻辑。比如说订单未支付状态到支付状态的变更需要走的业务,写流水、修改账户余额等。
  • 变更 一个状态被一个事件触发执行了某些行为到达了另外一个状态的过程。
阅读全文