状态机的典型实现方法:
- 嵌套的switch语句
- 状态表
- 面向对象的状态设计模式
枚举状态和事件
将状态和事件进行枚举:
enum sm_state
{
state1,
state2,
state3
}
enum sm_event
{
event1,
event2,
event3
}
嵌套的switch语句实现状态机
嵌套的switch可以用一维状态表来表现:
当前状态 | 事件 | 监护条件 | 下一状态 | 动作 |
state1 | event1 | check是否符合规则 | event2 | action1 |
event2 | check是否符合规则 | event3 | action2 | |
event3 | check是否符合规则 | event4 | action3 | |
state2 | event1 | check是否符合规则 | event5 | action4 |
event2 | check是否符合规则 | event6 | action5 | |
event3 | check是否符合规则 | eve |