浅谈嵌入式C语言设计模式

1 - 什么是简单工厂模式?
简单工厂模式(simple factory pattern)是一种创建型模式,严格来说,简单工厂模式不属于23种设计模式之一,但简单工厂模式在实际的软件开发中,最为简单实用,因此,有必要学习一下简单工厂模式。
顾名思义,工厂,也就是生产东西的组织,比方说,一间生产鞋子的厂家,在夏天和冬天,生产鞋子的种类是不同的,但工厂还是同一间工厂,只不过是需要根据季节的不同而生产不一样的鞋子。
简单工厂模式由此产生,根据季节(变量)的不同,而去生产(定义)不同的产品(接口)。
通俗来说就是,你是一家家电工厂的 ceo,在夏天发指令给工厂,让它生产空调,在冬天发指令给工厂,让它生产电暖炉;至于工厂生产这些电器的过程,你不用关心,你只需要关心工厂能给你最终想要的结果,就可以了。
2 – 什么情况下要用简单工厂模式?
在嵌入式程序设计里面,工厂模式通常是在创建对象的时候使用的,用c语言的语义来说,就是在定义结构体变量的时候使用的。
在c语言里面,我们通过使用结构体来封装一些函数指针接口(简单工厂类),而这些函数指针接口在定义的时候,会根据传入的参数不同,分别赋予不同的函数实现。
也就是说,业务层可以不改变具体调用的接口,而可以通过工厂类来进行接口实现的初始化,简单来说,就是接口不变,但由于工厂类初始化的不一样,导致具体的函数功能实现改变了。
举一个例子,假如有三款rgb-lcd屏幕,这三款屏幕的驱动芯片有很大的差异,芯片初始化,写数据,写命令等等各个操作在细节上都非常不一样。
而对于调用这些函数接口的功能模块来说,它们是不管这些差异的,它们都是调用同一个接口,而具体的实现细节,则是根据传入的参数的类型,来决定这些接口具体对接哪一款屏幕,这样就可以不改变函数接口,而实现不同的屏幕对接。
在面向对象语言里面,简单工厂模式就是使用了编译时多态的特性。而在c语言里面,这个就是面向接口编程。
为什么要这样设计呢?主要是因为,在多层次的软件架构中,顶层的业务软件是不关心底层的工厂逻辑实现的,也就是说,不管你是初始化哪类型的lcd。
对于顶层软件来说,都应该只是初始化lcd,都应该要用同一个接口。而针对相同接口不同的功能实现,就需要用到工厂模式,把底层的实现逻辑封装起来了。
3 – 如何使用简单工厂模式?
在嵌入式软件开发中如何使用简单工厂模式?话不多说,直接编写一个例程来说明如何在嵌入式软件中使用简单工厂模式。
1、还是以上面对接不同的rgb-lcd为例,先看看整个例程架构,lcd_module.h是对lcd模组的抽象,lcd_module主要是同一家工厂,根据不同的lcd类型来生产lcd,而lcd_module_a和lcd_module_b是分别两种不同的lcd,如下图所示。


Elektrobit和NXP Semiconductors合作S32G3处理器
华为Sound X正式发售 售价1999元
机器人联合“天眼” 在新疆电力系统中首次运用
【新专利介绍】数字直读式防污垢液封水表
realme X系列限时直降150元搭载骁龙710处理器最高配置为8GB+128GB
浅谈嵌入式C语言设计模式
电阻、电感与电容的区别
PSO输出脉冲同步激光器时钟信号的功能解析
简析LVGL基础知识之对象模块
交流变频电源的特点,交流变频电源调试方法
5G杀手级的应用离我们还有多远
MWC2019:瑞声科技首发5G产品“全家福”
接地电阻柜运行多久保养一次
基于STM32单片机通过使用宏assert_param来实现运行时间检测
Maxim发布业界首款耐辐射安全认证器,可在恶劣环境下使用
日本东京大学研发出了智能皮肤,可实时显示健康数据
stm32定时器如何获取高电平脉宽的时间
IBF288模块的工作原理、特点及应用
如何开发你的第一个NCS(Zephyr)应用程序
电动汽车充电桩直流充电桩详解_直流充电桩和交流充电桩的区别