【设计模式】的C语言的设计模式及其应用

转自https://blog.csdn.net/devcloud/article/details/95615621

【摘要】 软件编写模式是开发过程中的重要经验总结。灵活运用设计模式,一方面利于我们编写高质量的代码,另一方面也方便我们对代码进行维护。

设计模式最开始是针对面向对象语言提出的。经典的书如《设计模式:可复用面向对象软件的基础》,《java与模式》。《设计模式》的作者俗称”GOF”, gang of four,书中从面向对象的设计中精选出23个设计模式,这个也成了后来设计模式的范例。

C语言设计模式的书非常少,目前没有看到合适的。有一本《C嵌入式编程设计模式》,作者douglass。书一共6章,里面没有太多高含金量的内容。书的主要问题在于没有真正把设计模式应用到C,而是把一些基本的嵌入式开发注意点包装成模式,中断算一种设计模式,轮询算一种设计模式,互斥算一种模式。照这个套路,C函数指针使用肯定也算一种模式,强制类型转换肯定也得算。我觉得是为了出书而滥造模式。这本书就状态机模式描述比较多些。这人还合写了另外一本书叫《Real-Time Design Patterns》,我也感觉内容非常稀,那些内容根本不能称为设计模式(Design Patterns)。我以后不会看他的书了。

本专题尝试简单讲解设计模式的思路,在嵌入式中的应用和样例代码入手,特别是注意设计模式在linux内核和实际开发中的应用,总结出真正在C语言和嵌入式开发中有生命力的少数几个模式。C语言实现设计模式的几个利器有结构体,函数指针,利用数组实现多态。

本专题讲解模式会按照如下格式:

u  模式的介绍

u  模式的应用场景

u  样例代码

u  模式总结

样例代码全部以C代码实现,可能会穿插讲解java样例以方便对比为什么C实现模式演化成这个样子以及和面向对象语言的差异。
C语言应用设计模式的误区

在C语言开发中应用设计模式有几种现象,分析如下

用C模拟面向对象

用C模拟面向对象,用结构体模拟类,用结构体包含看作继承。这种做法在特定需要的场合少量使用尚可,但是如果为了模拟面向对象的特性就南辕北辙了。

用很多特定的宏来将C在形式上封装为C++

用C模仿面向对象和设计模式有另外一种流派,就是用很多特定的宏来封装。我非常反对这种用法,因为基本上对于程序员而言,已经对C语言的阅读和书写造成了严重的干扰,不能为了面向对象而面向对象,C语言自然有其简洁高效的一面。

盲目追求设计模式

随着设计模式的思想的普及,很多设计师对设计模式盲目崇拜和过分追求,为了用模式而用模式,削足适履。对于嵌入式开发常用的C语言而言,少了很多面向对象的特点,经典的23个设计模式肯定不会都适用,而且在实际工作中,其实也不会为了模式而模式。而且从技术上讲23个设计模式当时是围绕面向对象提出的,有的模式偏向于逻辑,那么可以被C借鉴,有的是为了解决面向对象本身的集成,关联等问题,那就没有必要借鉴。
各章节链接
设计模式的C语言应用-状态机模式-第二章

设计模式的C语言应用-责任链模式-第三章

设计模式的C语言应用-观察者模式-第四章

设计模式的C语言应用-命令模式-第五章

设计模式的C语言应用-适配系列模式-第六章

设计模式的C语言应用-建造者模式-第七章 

 设计模式的C语言应用-外观模式-第八章

设计模式的C语言应用-访问者模式-第九章

设计模式的C语言应用-非典型模式-第十章

 


设计模式的分类

设计模式如下分为创建型模式,结构型模式,行为型模式。

创建型模式

         1、抽象工厂模式(Abstract Factory)

         2、建造者模式(Builder)

         3、工厂方法模式(Factory Method) 

         4、原型模式(Prototype) 

         5、单例模式(Singleton) 

结构型模式

         1、适配器模式(Adapter) 

         2、桥接模式(Bridge) 

         3、组合模式(Composite) 

         4、装饰者模式(Decorator) 

         5、外观模式(Facade) 

         6、享元模式(Flyweight) 

         7、代理模式(Proxy)、

行为型模式

         1、职责链模式(Chain of Responsibility) 

         2、命令模式(Command) 

         3、解释器模式(Interpreter) 

         4、迭代器模式(Iterator) 

         5、中介者模式(Mediator) 

         6、备忘录模式(Memento) 

         7、观察者模式(Observer) 

         8、状态模式(State) 

         9、策略模式(Strategy) 

         10、模板方法模式(Template Method) 

         11、访问者模式(Visitor)  
————————————————
版权声明:本文为CSDN博主「华为云」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/devcloud/java/article/details/95615621

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值