状态机介绍

前言

在实际生活中每个对象都具有状态属性, 比如订单会具有(待支付, 待发货, 待收货, 待评价)等一系列的状态. 而不同的行为不同的操作会触发状态的转换. 在编程领域我们可以对对象行为建模描述其生命周期, 而这个工具就叫做状态机

简介

状态机是有限状态机的简称. 有限状态机(英语: finite-state-machine, 缩写: FSM), 又称有限状态自动机(英语: finite-state automaton, 缩写: FSA), 简称状态机. 是表示有限个状态以及在这些状态间转移和动作等行为的数学计算模型.

特点

一个状态机可以具有有限个特定的状态, 它通常根据输入, 从一个状态转移到另一个状态, 不过也可能存在瞬时状态, 而一旦任务完成, 状态机就会立刻离开瞬时状态. 每个状态根据不同的前置条件, 会从当前状态流转至下一个状态.

作用

使用状态机来表达状态的流转, 会使语义更加清晰, 可以增强代码的可维护性和阅读性.

适用场景

面对复杂的状态流转(一般是超过三个或三个以上的状态流转)

实现

状态机实现最简单的就是if-else方案, 但该方案存在以下几个问题

  1. 复杂的业务流程if-else难以维护
  2. 可拓展性不好
  3. 阅读性不好, 牵一发而动全身
  4. 其它的业务逻辑也容易与if-else代码耦合到一块

Java实现

枚举状态机

状态模式状态机

spring-statemachine

squirrel-foundation

sateless4j

cola-statemachine

参考

关于状态机的技术选型,最后一个真心好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值