目录
基于运行时栈的状态机设计
状态机运行时状态之间的跳转会由一个栈来维护和管理,用于记录状态的跳转上下文。状态之间的跳转方式有以下几种方式:
- Enter(targetState,exitCurrent):跳到下一个状态,在栈中压入目标状态,exitCurrent表示是否先推出当前状态
- Exit(targetStateWhenEmpty):跳到上一个状态,当前状态弹出栈顶,targetStateWhenEmpty表示当栈弹空的时候进入的状态,没有则如今到默认状态。
- ClearStack(targetState):清空栈至最底层状态或者清空栈并且进入指定的目标状态targetState,如果栈中只有一个状态并且targetState为空则进入默认状态。
状态切换事件
状态切换的时候会触发以下几个状态事件:
- OnEnter:第一次压入栈顶的时候
- OnExit:弹出栈的时候
- OnPause:作为栈顶的时候压入新元素的时候
- OnResume:弹出栈顶元素,该状态变为栈顶的时候
应用
在实践中,该设计可以用于简单的状态机需求,例如基于运行时栈的UI管理,但暂不支持层次状态机。