【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

关于软件设计方面的书很多,比如《重构》,比如《设计模式》。至于软件开发方式,那就更多了,什么极限编程、精益方法、敏捷方法。随着时间的推移,很多的方法又会被重新提出来。

其实,就我个人看来,不管什么方法都离不开人。一个人写不出二叉树,你怎么让他写?敏捷吗?你写一行,我写一行。还是迭代?写三行,删掉两行,再写三行。项目的成功是偶然的,但是项目的失败却有很多原因,管理混乱、需求混乱、设计低劣、代码质量差、测试不到位等等。就软件企业而言,没有比优秀的文化和出色的企业人才更重要的了。

从软件设计层面来说,一般来说主要包括三个方面:

(1)软件的设计受众,是小孩子、老人、女性,还是专业人士等等;
    (2)软件的基本设计原则,以人为本、模块分离、层次清晰、简约至上、适用为先、抽象基本业务等等;
    (3)软件编写模式,比如装饰模式、责任链、单件模式等等。

从某种意义上说,设计思想构成了软件的主题。软件原则是我们在开发中的必须遵循的准绳。软件编写模式是开发过程中的重要经验总结。灵活运用设计模式,一方面利于我们编写高质量的代码,另一方面也方便我们对代码进行维护。毕竟对于广大的软件开发者来说,软件的维护时间要比软件编写的时间要多得多。编写过程中,难免要有新的需求,要和别的模块打交道,要对已有的代码进行复用,那么这时候设计模式就派上了用场。我们讨论的主题其实就是设计模式。

讲到设计模式,人们首先想到的语言就是c#或者是java,最不济也是c++,一般来说没有人会考虑到c语言。其实,我认为设计模式就是一种基本思想,过度美化或者神化其实没有必要。其实阅读过linux kernel的朋友都知道,linux虽然自身支持很多的文件系统,但是linux自身很好地把这些系统的基本操作都抽象出来了,成为了基本的虚拟文件系统。

举个例子来说,现在让你写一个音乐播放器,但是要支持的文件格式很多,什么ogg,wav,mp3啊,统统要支持。这时候,你会怎么编写呢?如果用C++语言,你可能会这么写。

class music_file
{HANDLE hFile;public:void music_file() {}virtual ~music_file() {}virtual void read_file() {}virtual void play() {}virtual void stop() {}virtual void back() {}virtual void front() {}virtual void up() {}virtual void down() {}
};

其实,你想想看,如果用C语言能够完成相同的抽象操作,那不是效果一样的吗?

typedef struct _music_file
{HANDLE hFile;void (*read_file)(struct _music_file* pMusicFile);void (*play)(struct _music_file* pMusicFile);void (*stop)(struct _music_file* pMusicFile);void (*back)(struct _music_file* pMusicFile);void (*front)(struct _music_file* pMusicFile);void (*down)(struct _music_file* pMusicFile);void (*up)(struct _music_file* pMusicFile);
}music_file;

当然,上面的例子比较简单,但是也能说明一些问题。写这篇文章的目的一是希望和朋友们共同学习模式的相关内容,另一方面也希望朋友们能够活学活用,既不要迷信权威,也不要妄自菲薄。只要付出努力,付出汗水,肯定会有收获的。有些大环境你改变不了,那就从改变自己开始。万丈高楼平地起,一步一个脚印才能真真实实学到东西。如果盲目崇拜,言必google、微软、apple,那么除了带来几个唾沫星,还能有什么受用呢?无非白费了口舌而已。

希望和大家共勉。

C语言和设计模式(之开篇)相关推荐

  1. elm具体实现过程_函数式编程中的战斗机(二)---elm语言MUV设计模式应用实例...

    1 elm语言设计模式的特点 1.1 面向对象设计模式的特点 每种编程语言都有其独特的语法和优缺点,从而导致与众不同的设计模式和固定架构.面向对象编程因其竭力接近和模拟现实世界的多态和继承,导致面向对 ...

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

    转自https://blog.csdn.net/devcloud/article/details/95615621 [摘要] 软件编写模式是开发过程中的重要经验总结.灵活运用设计模式,一方面利于我们编 ...

  3. C语言和设计模式大全(附代码示例)

    文章目录 C语言和设计模式(之单件模式) C语言和设计模式(之原型模式) C语言和设计模式(之组合模式) C语言和设计模式(之模板模式) C语言和设计模式(工厂模式) C语言和设计模式(责任链模式) ...

  4. C语言实现设计模式—模板模式

    文章目录 C语言实现设计模式-模板模式 模板模式介绍 UML用例说明 实际场景使用 框架结构[共用框架]-通用的串口协议分析函数 不同实现-数据类型区别 C语言实现设计模式-模板模式 模板模式介绍 在 ...

  5. 函数式编程中的战斗机(二) --运用elm语言MUV设计模式做一个简单的应用实例

    @函数式编程中的战斗机(二) -运用elm语言MUV设计模式做一个简单的应用实例 1 elm语言设计模式的特点 1.1 面向对象设计模式的特点 每种编程语言都有其独特的语法和优缺点,从而导致与众不同的 ...

  6. C语言和设计模式(继承、封装、多态)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 记得还在我们大学C++第一门课的时候,老师就告诉我们说,C++是一门面向对象的语言.C++有三 ...

  7. C语言和设计模式(之单件模式)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 有过面试经验的朋友,或者对设计模式有点熟悉的朋友,都会对单件模式不陌生.对很多面试官而言,单件 ...

  8. GO语言实现设计模式【全】

    文章目录 0.前言 1.责任链模式 概念 示例 登机过程 测试程序 运行结果 2.命令模式 概念 示例 电饭煲接收器 电饭煲命令 测试程序 运行结果 3.迭代器模式 概念 示例 班级成员 运行结果 4 ...

  9. go语言学习路线图_开篇:Go 语言的优势与学习路线图

    开篇:Go 语言的优势与学习路线图 由 学院君 创建于1年前, 最后更新于 4个月前 版本号 #5 简介 Go 语言又称 Golang,由 Google 公司于 2009 年发布,近几年伴随着云计算. ...

最新文章

  1. Java并发编程(一)Thread详解
  2. 机器学习编程语言_我应该选择哪种编程语言? 我应该专注于前端吗? 后端? 机器学习?...
  3. R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)、查看限制了规则的右侧之后挖掘到的规则(置信度排序,只查看左侧即可)
  4. 如果记录没有跟得上创造和学习
  5. sudo: apt-get:找不到命令”的解决方法
  6. [开源]基于姿态估计的运动计数APP开发(一)
  7. matlab的傅里叶变换
  8. 构建官方CoreOS COSA 镜像并构建 CoreOS
  9. joomla 3.6 mysql 版本_Joomla是否支持MariaDB数据库?
  10. 我在GNU/Linux下使用的桌面环境工具组合
  11. delphi 得到安装列表_印象笔记第2课 安装 基本操作 收集素材(视频+文字+图片)...
  12. maven teavm-idea-artifacts: Command execution failed.: Process exited with an error: 1 Exit value: 1
  13. 数据库知识与技巧日常汇总
  14. 手机游戏满江红里的诗句
  15. keytool生成证书
  16. altium 不规则焊盘 创建异形焊盘方法
  17. 技能梳理24@stm32+阿里云+nbiot+dht11+bh1750+土壤湿度传感器+oled
  18. 如何防止木马性图片上传
  19. 电脑桌面变窄屏,两端为黑色
  20. ps怎么设计html界面,UI设计师的工作界面怎么用PS设置

热门文章

  1. 海外ubuntu,lamp,ftp,phpmyadmin配置
  2. 困惑我半年的一个问题终于解决了
  3. nux 平台的 libpcap 源代码分析
  4. JavaEye站长对OpenSocial与Facebook平台的比较
  5. 第二十二章:面向对象(2)
  6. 浅拷贝(副本)与深拷贝
  7. EFCore 迁移
  8. 关于Bootstrap的理解
  9. BNUOJ 7178 病毒侵袭持续中
  10. 初识php的笔记(基础知识)