您的位置:首页 > 编程语言

编程设计中类库和框架区别和联系

2016-03-03 14:39 260 查看
库和框架都是一种有别于软件、面向程序开发者的产品形式。正因为如此,也有很多人误以为库就是框架,或者认为指定语言的库就是框架。

完全不同的概念

1,库
库的英语为 Library ( 简写 Lib ),框架的英语为 Framework。
库是将代码集合成的产品,供程序员调用。面向对象的代码组织形式而成的库也叫类库。
面向过程的代码组织形式而成的库也叫函数库。
在函数库中的可直接使用的函数叫库函数。开发者在使用库的时候,只需要使用库的一部分类或函数,然后继续实现自己的功能。

2,框架

框架 - 框架是一种特殊的、已经实现了的应用,你只需要对它填充具体的业务逻辑。框架是起主导作用的,由它来根据具体的应用逻辑来调用你的代码。根据具体的应用需求,在框架的基础上编写你自己的代码,由框架来调用你的代码,再由你的代码决定何时使用类库。可以说,框架是库的升级版。

对于Windows桌面应用开发,MFC(Microsoft Foundation Classes)既是一个类库,以C++类的形式封装了Windows的API,并且也包含一个应用程序框架。

对于Android移动应用开发,Android系统架构中的应用程序框架层已经为应用程序提供了一个应用程序框架(Android应用四大组件:Activity、Service、Broadcast
Receiver、Content Provider),应用程序可以调用Android系统原生提供的API,也可以使用第三方类库(百度地图API、OpenCV for Android等等)。当然应用开发者也可以使用第三方的应用程序框架,但没有什么必要。
开发者在使用框架的时候,必须使用这个框架的全部代码。

举个例子

假如我们要买一台电脑。框架为我们提供了已经装好的电脑,我们只要买回来就能用,但你必须把整个电脑买回来。这样用户自然轻松许多,但会导致很多人用一样的电脑,或你想自定义某个部件将需要修改这个框架。
而库就如自己组装的电脑。库为我们提供了很多部件,我们需要自己组装,如果某个部件库未提供,我们也可以自己做。库的使用非常灵活,但没有框架方便。

类库和框架联系

对面向对象开发而言,类库和框架有很多共同之处,但它们确确实实又是不同的。通过比较框架和类库的区别,可以更深入地理解框架的概念和内涵。框架是一种介于类库和应用系统之间的概念。



类库是类的集合,这些类之间可能是相互独立的。应用开发者希望使用任何一个类时可以直接调用它,而不必再写一个。与类库相比,框架和类库有着相似的形式, 即框架也往往是类的集合;但不同之处在于,框架中的各个类并不是孤立的,而框架中的业务逻辑代码是将不同的类“连”在一起,在它们之间建立协作关系。

框架通过封装处理流程的控制逻辑,使它对开发者透明,来简化开发工作。这种封装也是框架和类库(class library)的区别之一。类库由许多现成的、供开发者用于构建应用的组件组成,但是,开发者必须理解不同组件之间的关系,并编写处理流程代码把众多组 件组织起来。框架则不同,它通过预先把众多组件组织在一起的方式,封装了处理流程的控制逻辑;因此,开发者就不用再编写控制逻辑来组织组件之间的交互了。

应用开发者使用类库这种方法时,必须编写管理类库中不同组件实例(instance)的控制流程。为此,应用开发者必须充分理解每个相关组件,以及 组织组件协作所必需的业务逻辑。而使用框架这种方法时,由于大部分处理流程已经被框架管理了起来,所以开发者需要编写的控制代码就非常少。

由于应用框架隐藏了不同组件之间的处理流程,这就免去了开发者编写协调逻辑(coordination logic)之苦,也不用经历编写这些协调代码的学习曲线了。既然处理流程的控制逻辑从应用层移到了应用框架层,那么框架的设计人员就要运用其架构和领域 知识,来定义框架内的组件该如何协作;而使用框架的开发者,几乎无须知道框架组件如何协作,就能高效地开发应用。

总结

由此可见,从重用的角度来比较,框架提供的重用性比类库更大。类库的目标是提供通用的类,如果是Utility类的情况(包含多个static方 法),将其目标理解成提供通用的函数(就像C语言时代的函式库一样)也未尝不可;而框架的目标是提供在某领域内通用的软件系统半成品(或子系统半成品)。

参考资源
【1】维基百科,https://en.wikipedia.org/wiki/Software_framework
【2】原文地址,http://www.uedsc.com/class-libraries-and-frameworks.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: