。。。。。。。。。。。。。。。。。。。。好久好久没发帖子了
一是因为换了工作,工作比较忙,再一个确实没有什么新的感悟了;换了新工作,接到的项目,有很多模块,而且模块与模块之间相互影响;
比如简单的有LED,KEY,语音识别,I2C通讯,音频播放。。等等,相互之间又有耦合关系,
比如音频播放的时候不能语音识别,比如I2C通讯(软件模拟)的时候不能语音识别,LED的不同状态又影响按键的功能,比如灯灭的时候按下时开,灯开的时候按下时灭;
灯的状态还会影响语音识别的逻辑关系。。。
在我以前的处理方式很简单,按键按下就调用相应的处理函数,LED状态改变了就改变按键的处理函数,但是这样假如有多组按键,多组灯,逻辑就复杂了;
如果使用状态机。。又有点不合适,因为状态太多,而且每种状态只有很少部分不同,大部分都是相同的;
所以我就想到!!!!!一个是观察者模式,一个是以前学习ZIGBEE协议栈的分层思维
那么我重构之后的代码就是,各个模块只负责自己的事,没有权限去管理同级的模块;
1 比如按键,按下之后并不是直接调用处理函数,而且把按键的按下的信息,上报给上面的管理层,比如按下的信息(单击,双击,长按,按了多久。。按键编号等信息)上报上去,再由上面的管理层(或者说是应用层)来处理;
2 比如LED,LED状态改变之后,会产生一个事件,把这个事件的信息同样上传到相应的地方
这种思维就像是一些公司一样,每个部门负责不同的事情,同级的各部门之间不能直接关系,有上面一级的管理部门来调配,如果上面的管理部门处理不过来,那么就可以把管理部门再分割职能。。。
具体的实现和代码,下次再码。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>