OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5361|回复: 16

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

[复制链接]

8

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2018-5-2
在线时间
83 小时
发表于 2018-12-23 11:27:35 | 显示全部楼层 |阅读模式
。。。。。。。。。。。。。。。。。。。。好久好久没发帖子了
一是因为换了工作,工作比较忙,再一个确实没有什么新的感悟了;换了新工作,接到的项目,有很多模块,而且模块与模块之间相互影响;

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

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

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

这种思维就像是一些公司一样,每个部门负责不同的事情,同级的各部门之间不能直接关系,有上面一级的管理部门来调配,如果上面的管理部门处理不过来,那么就可以把管理部门再分割职能。。。
具体的实现和代码,下次再码。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2018-12-24 18:03:59 | 显示全部楼层
老哥在哪里工作啊,怎么年底才来换工作
回复 支持 反对

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2018-12-24 21:15:42 来自手机 | 显示全部楼层
说实话51和stm32还不需要多人配合,完全一个人都可以搞定的
回复 支持 反对

使用道具 举报

8

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2018-5-2
在线时间
83 小时
 楼主| 发表于 2018-12-25 09:15:03 | 显示全部楼层
a3748622 发表于 2018-12-24 18:03
老哥在哪里工作啊,怎么年底才来换工作

深圳呀,10月份就过来了。。从长沙那边过来的
回复 支持 反对

使用道具 举报

8

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2018-5-2
在线时间
83 小时
 楼主| 发表于 2018-12-25 09:17:26 | 显示全部楼层
yklstudent 发表于 2018-12-24 21:15
说实话51和stm32还不需要多人配合,完全一个人都可以搞定的

还是有很多大型工程的,比如ZIGBEE的协议栈,一些驱动,当然这种不仅仅是局限于32和51,而且就算是一个人做,如果构造得不好,你自己都维护不了,如果要交给别人维护呢?别人、、、什么鬼祖传代码
回复 支持 反对

使用道具 举报

27

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2016-8-31
在线时间
252 小时
发表于 2018-12-25 09:23:51 | 显示全部楼层
支持老哥,我最近就在尝试把一些常用的东西封装成类,但是不是相关专业只是业余。。感觉有点吃力
回复 支持 反对

使用道具 举报

0

主题

58

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2387
金钱
2387
注册时间
2017-1-15
在线时间
318 小时
发表于 2019-3-9 07:29:56 | 显示全部楼层
好久没来论坛了 终于看到你的大作了
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-9-18
在线时间
22 小时
发表于 2020-1-15 14:38:53 | 显示全部楼层
求更新啊,想找一个好的串口接收处理的方法
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2019-8-29
在线时间
8 小时
发表于 2020-3-11 20:12:55 | 显示全部楼层
感谢老哥的教程,期待新的感悟
回复 支持 反对

使用道具 举报

46

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1128
金钱
1128
注册时间
2016-3-25
在线时间
365 小时
发表于 2020-7-1 17:24:22 | 显示全部楼层
这是我基于面向对象编程的思维写了一个DEMO,感觉代码复用较高。见笑了哈。这也是一次尝试。
]SQII6]RQ5X3A{YWT_}8I@O.png
C4S6GHT@3TD{LYKRAHVV@D4.png
代写STM32各类驱动,DEMO程序
回复 支持 反对

使用道具 举报

8

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2018-5-2
在线时间
83 小时
 楼主| 发表于 2020-8-10 11:17:14 | 显示全部楼层
Mr.liu 发表于 2020-7-1 17:24
这是我基于面向对象编程的思维写了一个DEMO,感觉代码复用较高。见笑了哈。这也是一次尝试。

....我都看不懂这些代码啦。。转行了转行了,现在做厨师了
回复 支持 反对

使用道具 举报

8

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2018-5-2
在线时间
83 小时
 楼主| 发表于 2020-8-10 11:19:09 | 显示全部楼层
tc793069303 发表于 2020-1-15 14:38
求更新啊,想找一个好的串口接收处理的方法

这些差不多就是提供一个思路,你从前面的开始看,可以去看我推荐的书籍(前面几章里面有推荐书籍),我也是简单应用一下,我现在都转行做厨师了。。
回复 支持 反对

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2020-8-10 11:23:49 | 显示全部楼层
safu枫 发表于 2020-8-10 11:19
这些差不多就是提供一个思路,你从前面的开始看,可以去看我推荐的书籍(前面几章里面有推荐书籍),我也 ...

跨度有点大啊,楼主
回复 支持 反对

使用道具 举报

16

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
金钱
305
注册时间
2017-1-7
在线时间
107 小时
发表于 2020-8-10 14:19:35 | 显示全部楼层
真干厨师去了?
为啥,回老家了?
回复 支持 反对

使用道具 举报

8

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2018-5-2
在线时间
83 小时
 楼主| 发表于 2020-8-10 15:33:58 | 显示全部楼层
Marvelous 发表于 2020-8-10 14:19
真干厨师去了?
为啥,回老家了?

恩啊,回老家了,之前公司效益不好,小公司,现在回老家考了个公务员。。。每天给女朋友做饭啊,以前也干过厨房1年多
回复 支持 反对

使用道具 举报

16

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
金钱
305
注册时间
2017-1-7
在线时间
107 小时
发表于 2020-8-10 16:21:36 | 显示全部楼层
safu枫 发表于 2020-8-10 15:33
恩啊,回老家了,之前公司效益不好,小公司,现在回老家考了个公务员。。。每天给女朋友做饭啊,以前也干 ...

兄弟牛皮,考公上岸了。
回复 支持 反对

使用道具 举报

0

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2014-6-6
在线时间
22 小时
发表于 2020-8-10 16:54:10 | 显示全部楼层
是的人才,跨界有点狠
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 14:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表