没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
6721 次浏览 5
最新课程计划
图数据库与知识图谱 5-25 [北京]
基于 UML 和EA进行分析设计 5-25 [北京]
MBSE(基于模型的系统工程)5-28 [直播]
大数据平台搭建与高性能计算 6-1 [北京]
深度学习与知识图谱最佳实践 6-9 [北京]
用户体验、易用性测试与评估 6-26 [北京]
相关文章
Visual C++编程命名规则
任何时候都适用的20个C++技巧
C语言进阶
串口驱动分析
轻轻松松从C一路走到C++
C++编程思想
更多...
相关培训课程
C++并发处理+单元测试
C++程序开发
C++高级编程
C/C++开发
C++设计模式
C/C++单元测试
更多课程...
成功案例
北京嵌入式C高质量编程
中国航空嵌入式C高质量编程
华为 C++高级编程
北京 C++高级编程
丹佛斯 C++高级编程
北大方正 C语言单元测试
罗克韦尔 C++单元测试
更多...
求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler Code 会员
要资料
订阅 捐助
C语言-设计模式
作者:Luckydev来源:blog发布于:2016-8-4
设计模式的书相信很多人都看过。对于设计模式这样一种方法,相信不同的人有不同的理解。
C语言和设计模式(开篇)
关于软件设计方面的书很多,比如《重构》,比如《设计模式》。至于软件开发方式,那就更多了,什么极限编程、精益方法、敏捷方法。随着时
间的推移,很多的方法又会被重新提出来。
其实,就我个人看来,不管什么方法都离不开人。一个人写不出二叉树,你怎么让他写?敏捷吗?你写一行,我写一行。还是迭代?写三行,删掉
两行,再写三行。项目的成功是偶然的,但是项目的失败却有很多原因,管理混乱、需求混乱、设计低劣、代码质量差、测试不到位等等。就软件企业
而言,没有比优秀的文化和出色的企业人才更重要的了。
从软件设计层面来说,一般来说主要包括三个方面:
(1)软件的设计受众,是小孩子、老人、女性,还是专业人士等等;
(2)软件的基本设计原则,以人为本、模块分离、层次清晰、简约至上、适用为先、抽象基本业务等等;
(3)软件编写模式,比如装饰模式、责任链、单件模式等等。
从某种意义上说,设计思想构成了软件的主题。软件原则是我们在开发中的必须遵循的准绳。软件编写模式是开发过程中的重要经验总结。灵活运
用设计模式,一方面利于我们编写高质量的代码,另一方面也方便我们对代码进行维护。毕竟对于广大的软件开发者来说,软件的维护时间要比软件编
写的时间要多得多。编写过程中,难免要有新的需求,要和别的模块打交道,要对已有的代码进行复用,那么这时候设计模式就派上了用场。我们讨论
的主题其实就是设计模式。
讲到设计模式,人们首先想到的语言就是c#或者是java,最不济也是c++,一般来说没有人会考虑到c语言。其实,我认为设计模式就是一种基本思
想,过度美化或者神化其实没有必要。其实阅读过linux kernel的朋友都知道,linux虽然自身支持很多的文件系统,但是linux自身很好地把这些系统
的基本操作都抽象出来了,成为了基本的虚拟文件系统。
举个例子来说,现在让你写一个音乐播放器,但是要支持的文件格式很多,什么ogg,wav,mp3啊,统统要支持。这时候,你会怎么编写呢?如果
用C++语言,你可能会这么写。
其实,你想想看,如果用C语言能够完成相同的抽象操作,那不是效果一样的吗?
当然,上面的例子比较简单,但是也能说明一些问题。写这篇文章的目的一是希望和朋友们共同学习模式的相关内容,另一方面也希望朋友们能够
活学活用,既不要迷信权威,也不要妄自菲薄。只要付出努力,付出汗水,肯定会有收获的。有些大环境你改变不了,那就从改变自己开始。万丈高楼
平地起,一步一个脚印才能真真实实学到东西。如果盲目崇拜,言必google、微软、apple,那么除了带来几个唾沫星,还能有什么受用呢?无非白费
了口舌而已。
希望和大家共勉。
C语言和设计模式(单件模式)
有过面试经验的朋友,或者对设计模式有点熟悉的朋友,都会对单件模式不陌生。对很多面试官而言,单件模式更是他们面试的保留项目。其实,
我倒认为,单件模式算不上什么设计模式。最多也就是个技巧。
单件模式要是用C++写,一般这么写。
C
语言-设计模式
http://www.uml.org.cn/c%2B%2B/201608044.asp
第1页 共17页 2022/10/6 18:39
单件模式的技巧就在于类的构造函数是一个私有的函数。但是类的构造函数又是必须创建的?怎么办呢?那就只有动用static函数了。我们看到
static里面调用了构造函数,就是这么简单。
上面说了C++语言的编写方法,那C语言怎么写?其实也简单。大家也可以试一试。
C语言和设计模式(之原型模式)
原型模式本质上说就是对当前数据进行复制。就像变戏法一样,一个鸽子变成了两个鸽子,两个鸽子变成了三个鸽子,就这么一直变下去。在变的
过程中,我们不需要考虑具体的数据类型。为什么呢?因为不同的数据有自己的复制类型,而且每个复制函数都是虚函数。
用C++怎么编写呢,那就是先写一个基类,再编写一个子类。就是这么简单。
就这么简单的一个技巧,对C来说,当然也不是什么难事。
C
语言-设计模式
http://www.uml.org.cn/c%2B%2B/201608044.asp
第2页 共17页 2022/10/6 18:39
假设也有这么一个类型data_A,
既然上面用到了这个函数,所以我们也要定义啊。
使用上呢,当然也不含糊。
C语言和设计模式(之组合模式)
组合模式听说去很玄乎,其实也并不复杂。为什么?大家可以先想一下数据结构里面的二叉树是怎么回事。为什么就是这么一个简单的二叉树节点
既可能是叶节点,也可能是父节点?
那什么时候是叶子节点,其实就是left、right为NULL的时候。那么如果它们不是NULL呢,那么很明显此时它们已经是父节点了。那么,我们的这
个组合模式是怎么一个情况呢?
就是这么一个简单的数据结构,是怎么实现子节点和父节点的差别呢。比如说,现在我们需要对一个父节点的operate进行操作,此时的operate函
数应该怎么操作呢?
当然,有了parent的operate,也有child的operate。至于是什么操作,那就看自己是怎么操作的了。
父节点也好,子节点也罢,一切的一切都是最后的应用。其实,用户的调用也非常简单,就这么一个简单的函数。
C语言和设计模式(之模板模式)
模板对于学习C++的同学,其实并不陌生。函数有模板函数,类也有模板类。那么这个模板模式是个什么情况?我们可以思考一下,模板的本质是
什么。比如说,现在我们需要编写一个简单的比较模板函数。
C
语言-设计模式
http://www.uml.org.cn/c%2B%2B/201608044.asp
第3页 共17页 2022/10/6 18:39
剩余16页未读,继续阅读
资源评论
lyglary
- 粉丝: 0
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功