前言
在嵌入式软件设计过程中,也会用到一些设计模式,所以说设计模式并不是面向对象语言的专利,下面我通过查资料以及自己的思考总结的几种适合嵌入式软件开发的设计模式,仅供参考。具体问题还要具体的分析。
1.设计模式之适配器模式
适配器模式
是一种比较常用的软件设计模式(有时候叫做包装模式)。它将对象的接口转换成对于客户端(或者高层模块)来说比较容易使用的接口。通常来说,适配器用于应用程序编程接口(API)之上,以隐藏丑陋的接口或者可能发生变化的库。
很多硬件接口像笨拙的软件接口一样。可以把每个驱动程序设计为一个适配器。如果把驱动程序(即使不是open、close、read、write、ioctl)设计成通用的接口,那么当硬件接口改变的时候就不需要改变软件了。在理想的情况下可以切换整个平台而只需要修改底层实现。如下图:
注意,驱动程序是可以堆叠的。例如:显示组件调用闪存,接着闪存调用SPI进行通信。当调用显示组件的open方法的时候,该方法调用其子系统的初始化代码,在这个初始化代码中调用闪存的open方法,然后这个方法调用SPI驱动程序的open方法。这里有三个层次的适配器是为了提高软件的可移植性和可维护性。如果对于每个层次的接口都是一致的,那么上层的代码就不可能变化了。
2.设计模式之单例模式
要确保系统中每个部分都可以访问相同的一个对象,我们可以使用单例模式
。
当需要一个类有且仅有一个实例的时候,单例模式是很常用的。在一个面向对象的语言中,单例模式很常用。其负责解析创建对象的请求并保持其独立的状态。对于资源的访问是全局的,但所有的访问必须经过这个唯一的实例。单例类中没有公共构造函数。在C++中类似于这样: