Hello World

吞风吻雨葬落日 欺山赶海踏雪径

0%

有限状态机的实现

有限状态机(Finite-State Machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动做等行为的数学模型。

FSM是一种算法思想,简单而言,有限状态机由一组状态一个初始状态输入根据输入及现有状态转换为下一个状态的转换函数组成。

将上面的描述抽象,就形成了几个概念:

  1. state 状态,状态机通常包含多种状态
  2. event 事件,触发状态转移的原因
  3. action 动作状态转移中需要执行的动作
  4. transition 状态变化

20231030000001.png

state

状态的转移通常是: 由原始状态A通过事件推导输出状态B,状态本身的描述应该是不可变的类型,通常用枚举类标识状态。

event

用来做状态的推导的条件,不需要保存在状态机中,所以通常Event使用的是变量。

action

无副作用的函数。

transition

有副作用的函数,需要操作state,保持最小化原则,避免操作其他关联变量。状态变更中的任何中间操作需要在其内部完成,不能对外开放。

ps.

这里推荐一个状态机的轻量实现: cola-component-statemachine
虽然实现轻量,但是基本的概念与逻辑组织的比较好,是比较典型的状态机的实现了。