1、钩子模式:
比如报警器的布防、撤防、报警、在家布防状态,在处理撤防消息的时候,都是跳转到撤防状态,那把这个统一的行为,放到上一级状态实现。
当然,因为在报警状态下,需要停止声光报警,所以报警状态可以重载一下这个消息的处理。
2、提示器模式:
比如wifi模块的数据查询和数据解析,都需要用到轮询机制。
那么可以添加一个消息DataReady,这样把数据查询和数据解析解耦了。
注意,为了提高性能,在发送DataReady之前可以针对数据完整性做基本判断,再发送,比如fifo满。这个模式针对wifi和gsm串口的数据轮询非常有用。
另外,布防延时和报警延时,也可以用这个模式,分解RTC步骤。
3、延迟事件模式
qpn不支持,暂不分析。
4、正交模式:
在一个活动对象的成员变量里面包含另外一个层次状态机的实例,实现两个互不相关的状态机同时运行。并且可以在不同的容器里面重用组件(层次状态机)。