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

嵌入式技术

1368人已加入

描述

1 - 什么是简单工厂模式?

简单工厂模式(Simple Factory Pattern)是一种创建型模式,严格来说,简单工厂模式不属于23种设计模式之一,但简单工厂模式在实际的软件开发中,最为简单实用,因此,有必要学习一下简单工厂模式。

顾名思义,工厂,也就是生产东西的组织,比方说,一间生产鞋子的厂家,在夏天和冬天,生产鞋子的种类是不同的,但工厂还是同一间工厂,只不过是需要根据季节的不同而生产不一样的鞋子。

简单工厂模式由此产生,根据季节(变量)的不同,而去生产(定义)不同的产品(接口)。

通俗来说就是,你是一家家电工厂的 CEO,在夏天发指令给工厂,让它生产空调,在冬天发指令给工厂,让它生产电暖炉;至于工厂生产这些电器的过程,你不用关心,你只需要关心工厂能给你最终想要的结果,就可以了。

2 – 什么情况下要用简单工厂模式?

在嵌入式程序设计里面,工厂模式通常是在创建对象的时候使用的,用C语言的语义来说,就是在定义结构体变量的时候使用的。

在C语言里面,我们通过使用结构体来封装一些函数指针接口(简单工厂类),而这些函数指针接口在定义的时候,会根据传入的参数不同,分别赋予不同的函数实现。

也就是说,业务层可以不改变具体调用的接口,而可以通过工厂类来进行接口实现的初始化,简单来说,就是接口不变,但由于工厂类初始化的不一样,导致具体的函数功能实现改变了。

举一个例子,假如有三款RGB-LCD屏幕,这三款屏幕的驱动芯片有很大的差异,芯片初始化,写数据,写命令等等各个操作在细节上都非常不一样。

而对于调用这些函数接口的功能模块来说,它们是不管这些差异的,它们都是调用同一个接口,而具体的实现细节,则是根据传入的参数的类型,来决定这些接口具体对接哪一款屏幕,这样就可以不改变函数接口,而实现不同的屏幕对接。

在面向对象语言里面,简单工厂模式就是使用了编译时多态的特性。而在C语言里面,这个就是面向接口编程。

为什么要这样设计呢?主要是因为,在多层次的软件架构中,顶层的业务软件是不关心底层的工厂逻辑实现的,也就是说,不管你是初始化哪类型的LCD。

对于顶层软件来说,都应该只是初始化LCD,都应该要用同一个接口。而针对相同接口不同的功能实现,就需要用到工厂模式,把底层的实现逻辑封装起来了。

C语言

3 – 如何使用简单工厂模式?

在嵌入式软件开发中如何使用简单工厂模式?话不多说,直接编写一个例程来说明如何在嵌入式软件中使用简单工厂模式。

1、还是以上面对接不同的RGB-LCD为例,先看看整个例程架构,lcd_module.h是对lcd模组的抽象,lcd_module主要是同一家工厂,根据不同的lcd类型来生产lcd,而lcd_module_a和lcd_module_b是分别两种不同的LCD,如下图所示。

编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分