【Free style】设计模式的C语言应用-导言-第一章

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

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

设计模式最开始是针对面向对象语言提出的。经典的书如《设计模式:可复用面向对象软件的基础》,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)  


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200