`

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

 
阅读更多

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

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

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

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

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

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

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

 

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

 

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

 

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

 

分享到:
评论

相关推荐

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

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

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

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

    基于.NET Framework 4.0+.NET8等框架的C# WinForm开源控件库、工具类库、扩展类库、多页面开发框架

    这个框架集成了控件库、工具类库、扩展类库和多页面开发框架,旨在提升开发效率,优化用户体验,为桌面应用程序的构建提供强大的支撑。 首先,SunnyUI.NET的核心优势在于其丰富的控件库。控件库包含了各种常见和...

    python常用框架及第三方库

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

    签到 —— 一个自动签到框架

    为了运行这个框架,用户首先需要安装Python 2.7环境,并根据项目文档的指示安装依赖库,如requests、redis和mysql-connector-python等。然后,根据自己的需求编写或修改签到脚本,配置数据库连接(如果需要),最后...

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

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

    基于原生框架和库中间层设计的Hagworm框架源码

    该项目是Hagworm框架的源码,采用原生框架和库的中间层设计,包含94个文件,涵盖80个Python源代码文件、4个Shell脚本文件、2个Markdown文件、2个映射文件、1个Git忽略文件、1个许可证文件、1个YAML文件、1个...

    思维框架和逻辑.pdf

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

    acl框架库是一个C语言网络框架库,主要包含:服务器开发框架、同步异步网络通讯、常用数据结构、进程池线程池、流式xmljson

    综上所述,ACL框架库是一个全面的C语言开发工具,涵盖了网络服务器开发的各个方面,不仅提供了底层的通信机制,还包括了数据处理和资源管理的高级工具,为开发者构建复杂的网络应用提供了坚实的基础。学习和掌握ACL...

    C# 教学资料 首先介绍了Microsoft .NET Framework的框架,以及公共语言运行库、.NET Framework类库

    C# 教学资料 从基础只是到高级应用都有所讲解 ...首先介绍了Microsoft .NET Framework的框架,以及公共语言运行库、.NET Framework类库、ADO.NET和Web服务的特点。接着讲述了命名空间的基本定义和常用的类型。

    gRPC – RPC 库和框架、Windows、macOS

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

    Web前端常用框架汇总

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

    移动端H5 UI框架

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

    基于微软企业库的开发框架数据库

    这个框架利用了微软的Enterprise Library(企业库)来提供数据访问、事务处理、日志记录等核心功能,旨在简化开发过程,提高代码的可维护性和可扩展性。 【描述】:“代码见:...

    halcon视觉通用框架.zip

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

    基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip

    基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现...

    思维框架和逻辑-人月聊IT.pdf

    思维框架和逻辑是系统工程,它覆盖了学习、认知、问题解决和复盘、知识库多个维度的内容。本文档将学习方法和模式、个人知识库、思维框架逻辑和总结复盘四个方面进行了详细的阐述。 01. 学习方法和模式 学习方法和...

    收集前端常用框架包,及UI库

    该资源包括前端常用的组件库和js框架库,由于react太多,所以没有加入TAT,其中包括Vue(vue大法好,可能不全),angular(据说用的不多了),animate(一款css的动态库,用animation做的),core.js(用的比较少,...

    Qt插件框架 PluginFrame

    Qt插件框架(PluginFrame)是一个基于Qt 5.9开发的插件化系统,它允许程序动态地加载和使用插件,增强了软件的可扩展性和灵活性。在这个框架中,主程序设计为能够自动检测并加载与之同级的"plugins"文件夹内的所有...

Global site tag (gtag.js) - Google Analytics