最近想读一下关于设计模式的书籍,而经典的<<设计模式>>这本书是关于面向对象的,而我的大部分工作是与C程序打交道,也就是面向过程的。网上有人推荐Design Patterns for Embedded Systems in C这本书,于是baidu和google一通,于是京东买了本中文翻译版。第一章还没有读完就读不下去了,因为它居然是在用C语言实现OO的东西,我心中不解,感觉上当了,本以为是面向过程的设计模式,但是居然用C面向OO来写书,我头大了,一时无法理解。
今日网上又找了找,发现了Object-oriented Programming with ANSI-C,这本书1993年出版的,也是用C实现OO的思想,真是奇怪!!!
后来发现,object-C好像就是个类似的东西!为什么都这么搞呢? 就没有人对面向过程的设计模式进行总结吗???
2012.6.10
amozon上对于这本书的评价很差,我觉得也很差,算了,继续读一读吧!
看看这篇文章,有些关于oopc的历史:OOPC:Object-Oriented Programming in C
OOPC是指OOP(Object-Oriented Programming)与C语言的结合,它是一个面向对象C语言编程框架。它是一套C语言的宏,定义了OOP概念的关键字,借助于这一套宏,实现面向对象的特性,如类、对象、继承、接口、多态、消息等。
C++对于大型软件架构的良好可控性,和对以后程序员维护代码时良好的可读性;然而就目前来说,在嵌入式领域广泛的使用C++显然是不现实的事情。一般的嵌入式系统开发中只用到了其中的一小部分功能,而不需要全部的机制,比如多重继承、运算符重载等。因此,许多嵌入式系统的开发者就舍弃了C++的庞大身躯而回归到精简的C环境中。
一般情况下,一个更容易扩展、维护的软件通常采用的是OOP的思想,添加一个原本不存在的相对无关单独的个体,总比在一个已经存在的过程内硬塞进去一个对象要简单;而且面向过程更容易导致混乱的维护。然而舍弃C++的同时也舍弃了珍贵的OOP能力,实在太可惜了。
C语言良好的可移植性,对内存等良好的操作性以及执行之速度均是一般嵌入式产品的不二首选。我们要应此放弃C++吗?当然不,幸好已经有很多优秀的设计师为我们指明了C语言OOP化的道路。
虽然OOPC语法不如C++那么简洁,但是OOPC也有亮丽的特色,就是编译后的程序所占的内存空间比C++小的多,执行效率高,适用于Embedded System。
Axel-Tobias Schreiner阐述了利用普通ANSI-C同样可以实现面向对象思想,1993年10月出版图书《Object-oriented Programming with ANSI-C》阐述了利用ANSI-C实现面向对象编程思想的基础。
本书下载地址:http://www.planetpdf.com/codecuts/pdfs/ooc.pdf
中文翻译地址:http://wiki.chinaunix.net/index.php/OOC:内容
在2001年,Laurent Deniau以C 的宏指令(Macro)定义出OOPC的机制,并在其网页上公开与大家分享。请参考其网页:http://ldeniau.home.cern.ch/ldeniau/html/oopc/oopc.html
LW_OOPC(Light Weight Object-oriented Programming with C,2010.1.24开源)轻量级的面向对象C编程框架是由台湾高焕堂先生以及他的MISOO团队创作了第一个版本之后,又由金永华改进优化,再以LGPL协议开源出来的。这个框架的面世与高焕堂的著作《UML+OOPC嵌入式C语言开发精讲》有关。总共一个.h文件、25个宏、约100行代码,非常的轻量级,但很好的支持了很多的面向对象特性,比如继承、多态(非完全意义上的多态,因为要提供类型,不是完全统一的形态),可以很优美的实现面向接口编程。
LW_OOPC不足以提供足够的能力使我们实现面向对象所有的概念。但是我们依然可以应用它们完成我们简单的面向对象思想的构建。
开源地址:http://sourceforge.net/projects/lwoopc/
2012.6.10
今天终于草草的把这本书看完了,书中讲了许多的嵌入式的设计模式,用C模仿C++面向对象的实现了
我真的怀疑这样做的意义。书中用UML来描述C语言开发感觉蛮好的,UML中有专门的针对嵌入式开发的一些符号,可以用来做嵌入式C开发
这本书Real-time UML Third Edition: Advances in the UML for real-time Systems应该可以看一看
Real-time Design Patterns: Robust scalable Architecture for real-time systems.马马虎虎的也可以看看
以上三本书都是一个作者,看来这个家伙确实是UML中专攻嵌入式开发的专家
但是这本书应该和gof 23中设计模式根本没有比较吧,还是看design patterns这本书吧
2012.6.24