在51和STM32单片机上使用面向对象的编程,第六篇:观察者模式和分层管理

2019-07-21 04:34发布

。。。。。。。。。。。。。。。。。。。。好久好久没发帖子了
一是因为换了工作,工作比较忙,再一个确实没有什么新的感悟了;换了新工作,接到的项目,有很多模块,而且模块与模块之间相互影响;

比如简单的有LED,KEY,语音识别,I2C通讯,音频播放。。等等,相互之间又有耦合关系,
比如音频播放的时候不能语音识别,比如I2C通讯(软件模拟)的时候不能语音识别,LED的不同状态又影响按键的功能,比如灯灭的时候按下时开,灯开的时候按下时灭;
灯的状态还会影响语音识别的逻辑关系。。。

在我以前的处理方式很简单,按键按下就调用相应的处理函数,LED状态改变了就改变按键的处理函数,但是这样假如有多组按键,多组灯,逻辑就复杂了;
如果使用状态机。。又有点不合适,因为状态太多,而且每种状态只有很少部分不同,大部分都是相同的;
所以我就想到!!!!!一个是观察者模式,一个是以前学习ZIGBEE协议栈的分层思维
那么我重构之后的代码就是,各个模块只负责自己的事,没有权限去管理同级的模块;

1  比如按键,按下之后并不是直接调用处理函数,而且把按键的按下的信息,上报给上面的管理层,比如按下的信息(单击,双击,长按,按了多久。。按键编号等信息)上报上去,再由上面的管理层(或者说是应用层)来处理;
2  比如LED,LED状态改变之后,会产生一个事件,把这个事件的信息同样上传到相应的地方

这种思维就像是一些公司一样,每个部门负责不同的事情,同级的各部门之间不能直接关系,有上面一级的管理部门来调配,如果上面的管理部门处理不过来,那么就可以把管理部门再分割职能。。。
具体的实现和代码,下次再码。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
a3748622
1楼-- · 2019-07-21 06:40
老哥在哪里工作啊,怎么年底才来换工作
yklstudent
2楼-- · 2019-07-21 11:56
说实话51和stm32还不需要多人配合,完全一个人都可以搞定的
safu枫
3楼-- · 2019-07-21 16:57
a3748622 发表于 2018-12-24 18:03
老哥在哪里工作啊,怎么年底才来换工作

深圳呀,10月份就过来了。。从长沙那边过来的
safu枫
4楼-- · 2019-07-21 22:39
 精彩回答 2  元偷偷看……
宫本无三四
5楼-- · 2019-07-21 23:23
支持老哥,我最近就在尝试把一些常用的东西封装成类,但是不是相关专业只是业余。。感觉有点吃力
lf19880813
6楼-- · 2019-07-22 01:54
好久没来论坛了 终于看到你的大作了

一周热门 更多>