QP学习笔记
- 基本概念
- 事件:
一个事件是一类瞬间发生的能导致状态机去执行动作的事情。事件可以有参数,参数可以携带关于这个已发生事情的定量化的信息。当接收到一个事件的实例,状态机通过完成动作(执行代码)来响应。响应也许包括改变状态,这被称为一个状态转换。
- 断言:https://baike.baidu.com/item/assert.h/336982?fr=aladdin
- 状态表:函数指针数组
- 状态类:
- 扩展状态变量:QEP设计的创新性来自于把状态直接映射成状态处理函数,处理在状态里他们表示的全部事件。
- QEP层次式事件处理器的核心元素是QFsm结构,它通过一个‘状态处理函数指针’来跟踪当前状态。QFsm是用来派生的。
- QEP FSM的好处:通过函数指针来消除一层switch case
2.状态机的基本实现方式:
a) 嵌套的switch 语句
b) 状态表
c) 面向对象的状态设计模式
d) 目的:消除判断语句
思考方式:
不要使用分散的C或C++语句来思考,而应该使用状态机元素比如状态,转换,进入/退出动作,初始转换,和监护条件来思考。当你的思维有了这个量子跃迁,你将不会和令人费解的“意大利面条”代码作斗争。你将开始在一个较高的抽象层来思考,用最好的方法把行为分区到各个状态,在任何给定时间有哪些可用时间,以及记得状态机的最优化的状态层次。