当前位置:C++技术网 > 资讯 > 你必须知道的程序那些事:4 架构、框架、类库、设计模式和代码实现之间的关系

你必须知道的程序那些事:4 架构、框架、类库、设计模式和代码实现之间的关系

更新时间:2015-06-26 23:38:26浏览次数:1+次

    先给一张图。
     你必须知道的程序那些事:架构、框架、类库、设计模式和代码实现之间的关系
    通常情况下,编写代码则只是代码实现而已。所以,很多人也没有考虑到这个问题。开头的说明,也请认真阅读,概念的解释其实很简单,关键是在你的理解深度和广度的问题。
    对于这些概念,在开发的过程中,隐隐约约的,总是想不清楚。直到有一天,在网上看到了一篇文章,讲了一大堆,看完之后,很是触动。但是,我是努力结合自己的实践经验来理解,也经过了一段时间的琢磨,对这些概念也越发清晰。后面由于需要,自己着手开发一个框架,现在还在进行中。也正是因为这个过程,才让我更加的清楚了这些概念。
    从实践中总结,或许能更加清楚的阐明概念,让初学的人也能够理解很透彻吧。我只是尝试阐明,如果你看完后仍然有疑问,请在文章后面提出来哦。
    理解这些概念,是非常重要的事情。这个可以让你清晰的认识到自己的开发所处的水平层次。我想你一定会非常羡慕谷歌或者微软顶级程序员开发的各种框架吧。但是你是否想过,为什么他们那么强悍。有没有想过自己也要到达那个水平呢?你千万不要觉得一个框架是很了不起的事情,这样只会让你望而却步,永远无法突破自己的水平。希望本文的逐步讲解,可以让你放下警惕之心,真心的拥抱这些看似很了不起的东西和高大上的概念。有一个更好的认识,也可以引导自己更好的发展。
    在开始讲解这些概念之前,我可以给大多数的人的水平定位就是类和代码实现这两个,能够用到设计模式的都不多,写类库的就更少了。能够写框架的,在大家看来,那是高攀不起的大神了。那你会不会问,能够写架构的人呢?我告诉你,架构不是写的,而是想的。这是大师级的人物做的。其实,架构和框架这些其实都不难,难就难在能做复杂后能不能扛得住的问题。这就需要强大的内功了。对于我们开发软件的众生来说,写框架和设计架构应该是孜孜以求的吧。不过可悲的是,绝大多数人只是为了工作,只使用别人写好的类库和框架而已,解决了问题就OK了,仅此而已。
    能够写框架和会写但是开发中不写是两码事,会写了你用别人的框架都是再简单不过的事,甚至可以改进人家的框架。而只会用的程序员,永远都活在这个框架里。比如.net框架等。要想真正驾驭各种框架,请提升自己的水平到框架之上,否则只是码农。
    好了,开始讲概念了。因为这些概念是有层次关系的,所以,就直接从上到下来讲解。真正要设计一个项目时,也应是从上往下的。在一些大公司,架构设计师设计好架构,或者还会实现架构为框架,然后有了框架后,就给负责各个模块的程序员在框架中做开发。几乎所有的应届毕业生和工作几年的朋友,都工作在代码实现里,请深思你的发展问题。


架构:一个思维中的结构。
    架构不是一个具体的东西,它只是一个概念。一个产品的好坏,从架构就可以看得出来。不管是软件开发,还是各行各业,架构都可以应用的上。因为它只是一个概念而已。常见的汽车设计缺陷召回,就是从产品的设计看出来的,就是架构的问题,导致产品无法通过其他方式修补解决。在软件开发领域也是一样。一个软件设计得不好,修修补补还是解决不好,而一个设计良好的软件,修补很少也很健壮。这就是架构设计的重要性。好的架构,给开发也带来了便利性,给软件提高了扩展性和维护性等。谁都可以想出架构,只是好坏的问题。同时,架构是想出来的,不是做出来的。


框架:架构的实现产物
    一个架构再好,如果不能实现为一个具体的东西,那么也是百搭。要实现架构,就需要用具体的技术来做到。前面说了,架构谁都可以想出来,可是,实现架构可不是每个人都做得到的。实现架构需要大量的技术支持,实现后就是一个具体的框架了。常见的框架,到处都是。比如MFC,是应用程序框架等等。MFC包装了Win32开发,讲最原始的API开发模式,包装成一个MFC框架下的开发。在MFC开发中,一个CWinApp的类代表了一个应用程序实例。而在API开发中,需要从WinMain进入程序的流程,MFC则将此包装,让你不用关心这些流程了,可以专注于业务逻辑的开发。
    框架的目标就是给开发提供一个强大便捷的基础支持,让你可以不用去处理一些基础的事情,只需要使用框架提供的各种基础支持就行了。只要用了框架提供的支持,程序就可以做到想要的功能。现在微软强力推行的.Net,又是一个框架。因为采用的架构比MFC更高更远,因此也就更加复杂。并且因为目标不一样,所以框架的表现形式也截然不同。你只有按照框架的要求做,才能实现对应的功能。只要你按照要求做了,也可以轻松的实现各种支持的功能。比如只需要调用一个SendMail就可以发送邮件了,而具体如何发送,你只需要填入正确的邮件参数就够了,剩下的就是框架完成。


类库:框架的实现支持
    框架具体是什么呢?很多人以为,框架就是一些类库的集合。这是错误的认识。当然,框架和类库是密不可分的。类库是框架的组成部分。没有类库的支持,框架就是空空如也,那也是摆设。当然,这里指的是概念性的说法。因为有些框架可以不用面向对象的语言来开发,因此就没有类的说法。那么类库就说的很怪异。其实这里的类库,指的是一类功能的集合。比如文件处理功能,包括读写、修改、转换等等。如果用C语言写,那么就是一组函数库,如果用C++写,当然写成文件处理类最好了。这里就是将一类功能放在一起形成一类工具库。
    然而,框架不是类库的简单集合。一个框架不仅有类库的支持,还需要各种流程机制来保证框架完整的实现各个功能流程。类库只是提供功能的实现,而流程,则需要其他各个类库的相互配合才能完成。比如MFC的消息处理机制,底层有更多的消息传递机制的支持。当然,每个类里面也要提供相应的支持,否则这个机制就无法完成。所以说,框架是类库的有机结合,而不是简单的堆积。只有有机的组合,才会让框架具有生命力,才能动起来。


类:用面向对象的语言开发时的实现类库的一个工具
    框架是由大量的类库的有机集合体,完成基础功能的支持以及各种机制的支持。同样,一个类库,是由许多的类的集合而成。当然,这里就没有什么有机的结合,当然,你可以有机结合,形成一个整体。不过不建议这么做。因为类库只是一个静态的工具箱而已,尽量可能独立的工作,不能相互影响,这样更加方便。


函数库:用面向过程的语言开发时实现的功能组的支持
    如果采用面向过程开发类库,必然需要将大量实现一类的函数划分为一个功能组,以支持基本的功能,让开发更为便捷。但是这种实现,让功能函数很零散,不便管理,因此不推荐,一般也不会这样做。这也是为什么大家不用C语言做大项目的原因。


设计模式:具体的代码实现采用的一些小技巧
    一个功能具体如何实现,可能有很多种方法,不同的方法带来的效果是不一样的。而设计模式就是这些技巧的方法集合。专业的设计模式书上会列举大量的设计模式的讲解,就不在此多介绍。这里只是给大家一个定位。设计模式用于软件开发中的哪个层次中。可以说,不管我们有没有专门学过设计模式,可能经常在不经意中就用到了一些设计模式。这些都是一些人通过总结平时的开发中的代码实现所提取的。听的很高大上,其实就是那么回事。


代码实现:最底层的代码实现
    通常说的码农,就是只停留在代码实现这个层次。只会调用框架的类库或者简单的使用API而已,完成一些基本的功能。至于为什么这么做,反正框架规定了,系统规定了,就这么着吧。这就是地地道道的码农了。但是,非码农必然会经历码农的阶段,没有码农的基础,也不可能真正能够提升,否则也只是理论者,没有多少实践经验,经常理论理解的不深入,而对他人的理论妄加讽刺。
    最后,我希望大家能够从码农做起,然后具备了码农的实践经验后,然后往更高的层次走。层次越高,自然发展的越好。不过需要各个层次的支持,不可能跳过一些层次。好好对号入座,寻找发展的方向吧。
如果有任何疑问,请留言。如果有不正确或者不准确或者有歧义的地方,虚心接受批评和指正。