`

库和框架的区别(真是闲的)

 
阅读更多

本文面向玩代码玩的蛋疼的读者。

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

库的英语为 Library ( 简写 Lib ),框架的英语为 Framework。

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

框架则是为解决一个(一类)问题而开发的产品,框架用户一般只需要使用框架提供的类或函数,即可实现全部功能。可以说,框架是库的升级版。
开发者在使用框架的时候,必须使用这个框架的全部代码。

框架和库的比较可以想像为:

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

 

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

 

……应用开发者使用类库这种方法时,必须编写管理类库中不同组件实例(instance)的控制流程。为此,应用开发者必须充分理解每个相关组件,以及组织组件协作所必需的业务逻辑。而使用框架这种方法时,由于大部分处理流程已经被框架管理了起来,所以开发者需要编写的控制代码就非常少。由于应用框架隐藏了不同组件之间的处理流程,这就免去了开发者编写协调逻辑(coordination logic)之苦,也不用经历编写这些协调代码的学习曲线了。既然处理流程的控制逻辑从应用层移到了应用框架层,那么框架的设计人员就要运用其架构和领域知识,来定义框架内的组件该如何协作;而使用框架的开发者,几乎无须知道框架组件如何协作,就能高效地开发应用。

 

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

 

分享到:
评论

相关推荐

    Web高保真交互元件库及后台框架模板 View UI

    在实际项目中,View UI可以与其他前端工具和库(如jQuery、Axios等)结合使用,以增强功能或解决特定问题。同时,为了方便团队协作和版本控制,开发者应该将View UI的使用整合到版本管理系统(如Git)中,确保代码的...

    ST MC SDK5.x 电机库软件框架说明资料(共20页转载ST原厂).pdf

    1、总体软件架构:MC SDK 5.x架构可分为三个主要部分:芯片外设库、电机库和电机应用层。芯片外设库使用STHAL/LL库,它对STM32的外设进行封装,提供给各个层级调用。电机库是核心控制层,负责实现电机的FOC(矢量控制...

    使用DJANGO框架的库管理系统.zip

    使用DJANGO框架的库管理系统使用DJANGO框架的库管理系统使用DJANGO框架的库管理系统使用DJANGO框架的库管理系统使用DJANGO框架的库管理系统使用DJANGO框架的库管理系统使用DJANGO框架的库管理系统使用DJANGO框架的库...

    uistack一个Chrome扩展程序可让您查看网站使用的框架和库

    标题 "uistack:一个Chrome扩展程序,揭示网站使用的框架和库" 描述了一个实用工具,它专门设计用于帮助开发者识别和分析网页所采用的前端技术栈。这个Chrome扩展程序,即ui-stack,使得用户能够快速、便捷地洞察...

    C++资源大全之标准库与框架

    C++框架是用于开发应用程序的框架,它提供了一系列的库和工具,帮助开发者快速开发应用程序。Apache C++ Standard Library是一个通用的C++库,提供了一系列的算法、容器、迭代器和其他基本组件。 ASL(Adobe源代码...

    python常用框架及第三方库

    在Python中,有多种框架和第三方库被广泛应用于不同的领域,从Web开发到科学计算,从网页爬虫到游戏制作,无所不包。 一、Web框架 Web开发是Python应用的一个重要方向,以下是一些在Python社区中广泛使用的Web框架...

    英特尔 优化的人工智能库和框架.pdf

    英特尔 优化的人工智能库和框架.pdf

    Python 标准库 三方库 框架 学习 思维导图

    总的来说,Python的标准库、三方库和框架构建了强大的生态系统,使得Python能够胜任各种任务,从简单的脚本编写到复杂的软件开发。通过学习和使用这些资源,开发者可以提高效率,实现更复杂的功能,从而在编程世界中...

    思维框架和逻辑.pdf

    思维框架和逻辑是指思维是一个具备内在框架和逻辑的系统工程,思维覆盖了学习、认知、问题解决和复盘,知识库多个维度的内容。通过学习形成基础个人知识库,同时认知和解决问题实践验证,同时通过复盘转换为自我方法...

    Python项目开发指南:库、框架、工具与资源综述

    使用场景及目标:本文档旨在为Python开发者提供一站式的学习和开发资源,帮助他们更好地理解和使用各种工具和库,提高开发效率和项目质量。 阅读建议:初学者可以从官方文档和在线课程开始,逐步深入学习各个库和...

    gRPC – RPC 库和框架、Windows、macOS

    git上源码编译太久,提供一个库方便直接使用,内部包括Windows和macOS两个系统的。 gRPC 是一种现代、开源、高性能的远程过程调用 (RPC) 框架,可以在任何地方运行。gRPC 使客户端和服务器应用程序能够透明地通信,...

    基于GDAL库的遥感图像处理软件的框架设计与开发

    本文档主要介绍了基于GDAL库的遥感图像处理软件的框架设计方法,旨在帮助初学者快速学习和掌握GDAL库的使用。GDAL库是一个开源的栅格空间数据转换库,支持多种遥感数据格式,能够轻松解决遥感数据读取的难题。 通过...

    一些有趣的Javascript库框架集合按名称首字母az归类

    JavaScript是Web开发中不可或缺的一部分,尤其在前端领域,它的库和框架极大丰富了我们的开发工具箱。本资源集合提供了一个有趣的、按名称首字母排序的JavaScript库和框架列表,覆盖了从A到Z的各种选择。这不仅方便...

    Python开发必备:库、框架与工具的全面指南

    内容概要:本文介绍了Python开发中的常用库和框架,涵盖Web开发、数据分析与科学计算、机器学习与深度学习等领域。同时详细列出了开发工具与IDE,版本控制工具,官方文档、在线教程和社区资源,以及Python Package ...

    Axure 8 Web前端+移动前端+后台+元件库+交互原型+系统框架.zip

    Axure 8 Web前端+移动前端+后台+元件库+交互原型+系统框架.zipAxure 8 Web前端+移动前端+后台+元件库+交互原型+系统框架.zipAxure 8 Web前端+移动前端+后台+元件库+交互原型+系统框架.zipAxure 8 Web前端+移动前端+...

    halcon视觉通用框架.zip

    本文将深入探讨名为“MNVVisionCk”的Halcon视觉通用框架,该框架的出现极大地简化了Halcon的使用,并提供了丰富的预封装算子和停靠功能,旨在提升开发效率和用户体验。 首先,我们要理解Halcon框架的概念。框架在...

    移动端H5 UI框架

    移动端H5 UI框架是开发移动应用网页界面的重要工具,它为开发者提供了预设计的组件、样式和布局,以便快速构建美观且响应式的用户界面。在本文中,我们将深入探讨这个主题,了解H5 UI框架的基本概念,以及如何利用...

    Python_一个社区驱动的有用的Scala库框架和软件列表.zip

    标题中的“Python_一个社区驱动的有用的Scala库框架和软件列表”表明这是一份与Python和Scala编程语言相关的资源集合。这份压缩包可能是由社区成员维护的,它包含了一个列表,列出了各种实用的Scala库、框架以及软件...

    UI框架 界面框架 WEB框架

    该框架采用基于模板开发的理念,让使用者在开发系统时能够无需关心界面表现和兼容性等方面,通过简单的复制粘贴和非常小的修改量就能够方便地制作出精致美观、兼容性强的系统界面,从而把精力集中在系统功能的设计和...

    Web前端常用框架汇总

    在Web开发领域,前端框架是构建交互式和高性能网站的关键工具。这些框架为开发者提供了便捷的工具集...随着Web技术的不断发展,新的框架和库也会不断涌现,因此保持对前沿技术的关注和学习是每个前端开发者必备的能力。

Global site tag (gtag.js) - Google Analytics