`

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

 
阅读更多

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

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

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

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

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

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

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

 

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

 

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

 

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

 

分享到:
评论

相关推荐

    使用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源代码...

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

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

    python常用框架及第三方库

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

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

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

    思维框架和逻辑.pdf

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

    gRPC – RPC 库和框架、Windows、macOS

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

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

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

    halcon视觉通用框架.zip

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

    移动端H5 UI框架

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

    UI框架 界面框架 WEB框架

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

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

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

    j2me开发框架介绍

    j2me 开发框架介绍 j2me 是一种用于开发无线应用程序的平台,它...这些框架和库都可以用于简化 J2ME 应用程序的开发过程,提高开发效率。但是,在选择框架时,需要根据项目的需求和特点进行选择,以确保项目的成功。

    Android 开源框架源码解读.txt

    第2章 Okhttp网络库深入解析和相关面试题分析 第3章 Retrofit网络库深入解析和相关面试题分析 第4章 Glide图片库深入解析和相关面试题分析 第5章 LeakCanary内存泄漏框架解析和相关面试题分析 第6章 butterknife...

    Qt插件框架 PluginFrame

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

    xposed框架安装包合集

    这个框架的安装包合集包含了适用于不同Android版本的版本,为用户提供了一个灵活的方式来定制和优化自己的设备。 首先,我们来看一下提供的三个安装包: 1. **de.robv.android.xposed.installer_3.1.1_39.apk**:...

    框架包.zip

    开发者在使用时,只需将这些库文件添加到项目的类路径(ClassPath)中,然后按照框架提供的文档和示例进行配置,就可以快速启动一个新的项目。值得注意的是,虽然这个框架包简化了获取和集成框架的过程,但开发者仍...

    网络与服务器编程框架库

    下面我们将深入探讨网络通信库和服务器框架库的相关知识点。 1. **网络通信库**: 网络通信库是实现不同设备间数据交换的基础,通常包含TCP/IP、UDP、HTTP等各种协议的实现。例如,Python中的`socket`模块,Java的...

Global site tag (gtag.js) - Google Analytics