首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >什么叫分层状态机?

什么叫分层状态机?

原创
作者头像
用户10171634
发布2025-09-01 13:51:34
发布2025-09-01 13:51:34
7600
代码可运行
举报
运行总次数:0
代码可运行

好问题 👍。


1. 普通状态机(FSM, Finite State Machine)

  • 只有一层状态: Init → Connecting → Connected → Disconnected
  • 每个状态是“平行”的,处理事件时,如果状态不认识这个事件,就只能丢弃。
  • 优点:简单直观。
  • 缺点:一旦状态多、逻辑复杂,就会有大量重复代码。

2. 分层状态机(HSM, Hierarchical State Machine)

  • 在普通状态机的基础上,支持状态之间有父子层级关系
  • 子状态继承父状态的通用处理逻辑。
  • 如果子状态收到了一个事件而自己不处理,就会自动“冒泡”给父状态去处理。

例子(简化版 Wi-Fi):

代码语言:javascript
代码运行次数:0
运行
复制
DefaultState
 └── DisconnectedState
 └── ConnectingState
 └── ConnectedState
       └── RoamingState

解释:

  • DefaultState:所有 Wi-Fi 状态的父状态,处理“通用事件”(比如系统关闭 Wi-Fi)。
  • ConnectedState:表示 Wi-Fi 已连接。
  • RoamingState:是 ConnectedState 的子状态,表示正在漫游切换 AP。
    • 如果收到“断开 Wi-Fi”消息,RoamingState 不处理,就会交给 ConnectedState 或 DefaultState 去处理。

3. 好处

  • 复用逻辑:通用行为写在父状态里,不用在每个子状态重复。
  • 简化代码:状态多时,避免爆炸式 if-else 或 switch。
  • 更清晰的层次结构:和业务逻辑更贴合,比如“已连接”下细分“漫游”“维持”状态。

总结: 分层状态机(HSM)就是在有限状态机(FSM)的基础上,引入了“父状态/子状态”的层次关系,让子状态可以继承父状态的处理逻辑,从而让复杂系统的状态管理更加清晰、可维护。


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 普通状态机(FSM, Finite State Machine)
  • 2. 分层状态机(HSM, Hierarchical State Machine)
  • 3. 好处
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档