【单片机】常用设计模式

|-------|---------------|-----------------|--------------------|
| 设计模式 | 核心思想 | 特征 | 应用场景 |
| 桥接模式 | 将抽象与实现分离 | 抽象与实现解耦,各自独立扩展 | 对象有多维度变化,避免类爆炸 |
| 工厂模式 | 封装对象创建过程 | 隐藏创建细节,解耦使用者与产品 | 创建过程复杂,需动态创建不同对象 |
| 注册器模式 | 集中管理和查找对象 | 全局访问点,统一管理实例 | 全局对象共享,插件化、服务定位 |
| 订阅者模式 | 定义对象间一对多的依赖关系 | 目标和观察者解耦,支持广播通信 | 关联对象间的联动,事件驱动,消息通知 |

桥接模式,将一堆东西抽象出共性,分成几个维度,比如现在有一堆遥控器:

  • 小米普通遥控器
  • 小米语音遥控器
  • 小米触屏遥控器
  • TCL 普通遥控器
  • TCL 语音遥控器
  • ......

分成两个维度,遥控器(普通、语音、触屏)和电视(小米、TCL),"桥"就是"遥控器控制电视",遥控器只管按键,电视只管播放。

工厂模式,就是将对象创建的过程封装起来。适用于同类对象很多,很复杂,还需要动态处理的情况。

注册器模式,就是将各种对象注册到一个链表里,用的时候查表即可,省心高效。

订阅者模式的核心思想:

  • 发布者(Publisher):只管喊,不管谁听
  • 订阅者(Subscriber):自己关注感兴趣的"频道",有消息就处理
  • 事件总线(EventBus):负责把发布者的消息广播出去

架构上的变化,从蛛网到星形:

观察者模式,有点类似订阅模式,但是观察者本质是一个回调函数表,是需要立刻执行的。

  • PID 模块不需要知道 LCD 的存在,它只管修改数据。
  • LCD 也不需要知道谁在改数据,它只管订阅、等通知、刷新显示。
  • 新增功能? 只需要写一个新的观察者,注册到数据上即可。完全不用动原有代码。

在观察者模式的基础上,衍生了显示常用的MVC模式

单例模式,管好你的硬件资源:

单例模式源自面向对象的思想,将多个业务都会用到的功能,打包成一个实例,自我管理,封装接口,从而节约资源,避免冲突。比如多线程下都想打印,可以创建一个打印实例,有打印锁,有环,专门管理打印业务。

命令模式:

将操作封装成表的形式,用命令绑定某个操作,当命令来的时候,查表运行即可。比如显示上,将显示画面作为一个命令和处理lcd的函数绑定。

适配器模式,让换芯片不再痛苦:

不同驱动对服务层提供同名接口,方便硬件更换。rtthread的设备驱动层就是这个设计思想

责任链模式,主要用于通信链路层协议解析。在写代码上,就是多用反向判断错误条件,然后提前退出,而不是正向判断,什么条件满足我才该执行:

生产者消费者模式,主要解决生产消费速度不匹配问题,通过缓存实现异步操作,主要用于通信物理层。

相关推荐
拾知_H12 小时前
STM32/Delay延时函数编程思路
stm32·单片机·时钟·延时
nnsix13 小时前
设计模式 - 建造者模式 笔记
笔记·设计模式·建造者模式
2zcode13 小时前
基于STM32的智能扫地机器人设计与实现
stm32·嵌入式硬件·机器人
cui178756813 小时前
矩阵拼团 + 复购拼团:新零售最稳的复购模式,规则简单
大数据·人工智能·设计模式·零售
百珏13 小时前
[灰度发布]:全链路透传组件:APM、自研方案与 Java Agent 的实现取舍
后端·设计模式·架构
jllllyuz14 小时前
单相并网逆变器控制代码实现(STM32版)
stm32·单片机·嵌入式硬件
冉卓电子15 小时前
GD32C103RBT6 misc 内核驱动库极简解析
单片机·嵌入式硬件
yongui4783415 小时前
MAX6675 K型热电偶温度采集程序(Keil环境)
单片机·嵌入式硬件
豆包公子15 小时前
AUTOSAR CP XCP 移植到裸机 MCU-实践篇
单片机·嵌入式硬件
三佛科技-1341638421215 小时前
智能暖脚按摩器方案开发,智能暖脚按摩器MCU单片机主控芯片选择 (FT60F系列8位MCU)
单片机·嵌入式硬件·物联网·智能家居·pcb工艺