有限状态机
概念¶
- 状态(State):系统在某一时刻所处的稳定情形
- 事件(Event):触发状态变化的外部或内部刺激
- 转移(Transition):在某状态下,因某事件而进入的下一状态
- 动作(Action,可选):状态进入、退出或转移时执行的行为
设计原则¶
- 状态应当“互斥且穷尽”
- 状态描述“阶段”,而不是“动作”
- 状态数量越少越好,但不能牺牲语义清晰度
- 事件本身不决定行为,状态 + 事件 才决定行为及转移
- 动作不应决定下一个状态,状态的转移发生在事件处理时,动作和状态转移可以是“并列”的,但不能是“因果”的
设计流程¶
- 确认变量
- 针对变量列出真值表
- 说明每个条件下的动作
- 合并一些相同处理的情况
- 设计表示状态的变量
- 代码实现
1、2、3 步骤保证了状态完整且边界清晰,4、5 步骤对状态的情形进行了化简。
例子¶

自定义的“鼠标双击”状态:
- 第二次点击,第一次点击,连续点击的次数
- 列出真值表
- 说明情况
- 合并情况