【单片机】常用设计模式

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

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

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

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

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

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

订阅者模式的核心思想:

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

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

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

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

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

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

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

命令模式:

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

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

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

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

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

相关推荐
国科安芯9 小时前
立方星与微纳卫星综合电子微型化趋势下的抗辐射MCU选型综述
人工智能·单片机·嵌入式硬件·mcu·risc-v·抗辐射
xunyan62349 小时前
3-1 独立按键控制LED亮灭(SDCC + Notepad++ + STC-ISP/普中ISP)
单片机·嵌入式硬件·接口隔离原则
WD1372980155710 小时前
WD5030L,为充电桩、工业设备、5G 基站、车载系统、消费电子提供电源,7-30V 的宽压输入
stm32·单片机·嵌入式硬件·5g·车载系统·51单片机
创界工坊工作室12 小时前
30-基于STM32的小麦烘干塔温度控制系统设计
stm32·单片机·嵌入式硬件·proteus
高晶13 小时前
ARM 嵌入式 Linux 系统启动流程实战指南
设计模式·程序员
Zwawa13 小时前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
c语言·单片机·嵌入式
高晶13 小时前
BMS 通信开发实战:从 PMBus 协议到数据采集的完整指南
设计模式·程序员
geovindu13 小时前
rust:Memento Pattern(续)
开发语言·后端·设计模式·rust·行为模式·备忘录模
电子IT笔记13 小时前
老MES登录改造:弱密码和暴破一起治
设计模式
单片机仿真设计13 小时前
【proteus仿真设计】基于 STM32 的开荒机器人遥控控制系统设计(仿真图+程序)
stm32·嵌入式硬件·机器人·proteus