层次状态机编程三:状态机设计模式

本文探讨了层次状态机编程中的几种设计模式,包括钩子模式用于统一处理状态转换,提示器模式用于数据查询和解析的解耦,以及正交模式实现互不干扰的独立状态机运行。这些模式在实际应用中能有效提高代码的结构性和可维护性。
摘要由CSDN通过智能技术生成

1、钩子模式:
比如报警器的布防、撤防、报警、在家布防状态,在处理撤防消息的时候,都是跳转到撤防状态,那把这个统一的行为,放到上一级状态实现。

当然,因为在报警状态下,需要停止声光报警,所以报警状态可以重载一下这个消息的处理。

2、提示器模式:
比如wifi模块的数据查询和数据解析,都需要用到轮询机制。
那么可以添加一个消息DataReady,这样把数据查询和数据解析解耦了。
在这里插入图片描述
注意,为了提高性能,在发送DataReady之前可以针对数据完整性做基本判断,再发送,比如fifo满。这个模式针对wifi和gsm串口的数据轮询非常有用。

另外,布防延时和报警延时,也可以用这个模式,分解RTC步骤。

3、延迟事件模式
qpn不支持,暂不分析。

4、正交模式:
在一个活动对象的成员变量里面包含另外一个层次状态机的实例,实现两个互不相关的状态机同时运行。并且可以在不同的容器里面重用组件(层次状态机)。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值