我们中的许多人都不会意识到这种差异,在开发过程中理解这种差异非常重要。如果被问到这个问题,可能的答案是“框架是各种图书馆的集合”。然而,这个定义并不完全正确。“谁呼叫谁”,即呼叫者/被呼叫者关系定义了这两个术语之间的差异。是我们的代码调用库代码,而在框架中,是框架的代码调用我们的代码。让我们看看如何。
图书馆
库提供了一组助手函数/对象/模块,应用程序代码为特定功能调用这些函数/对象/模块。库通常只关注一个狭窄的范围(例如字符串、IO、套接字),因此它们的API往往更小,需要的依赖性也更少。它只是类定义的集合。我们为什么需要它们?代码已经被其他开发人员重用了。例如,一些库有一个名为findLastIndex(char)的方法来查找字符串中特定字符的最后一个索引。我们可以直接调用库的findLastIndex(charToFind)函数,并将需要查找的字符作为参数传递给函数调用。
框架
另一方面,框架定义了用户编写以创建自定义应用程序的开放或未实现的函数或对象。(C++/Java用户会理解这一点,因为这很像实现一个抽象函数)。因为框架本身就是一个应用程序,所以它的范围更广,几乎包含了根据用户需求制作用户应用程序所需的一切。维基百科更清楚地表明:
在计算机编程中,软件框架是一种抽象概念,在这种抽象概念中,提供通用功能的软件可以通过附加的用户编写的代码有选择地进行更改,从而提供特定于应用程序的软件
因此,关键的区别在于 “控制反转” ,俗称国际奥委会。当我们从库中调用一个方法时,我们处于控制之中。但在框架中,控制是反向的,即框架调用我们。它定义了一个框架,应用程序在其中定义自己的功能来填充框架。例如,在Javascript中,我们通常使用:
$(document.ready(){ // this call will be done by the jquery // framework when document will be ready. function() { /* your code */ // our implementation inside the framework's function }});
在库中,我们通常有它的对象来调用它的函数,或者我们简单地调用它们。前任:
str = "Geeks.ForGeeks"var pos = str.lastIndexOf("."); // simply calling function of string library
要点:
- 图书馆 :它执行一组特定且定义明确的操作。示例:网络协议、压缩、图像处理、字符串实用程序、正则表达式计算、数学等
- 框架: 它是一个框架,应用程序通过填充框架来定义操作的内容。框架示例:Web应用程序系统、插件管理器、GUI系统。框架只定义了概念,但应用程序进一步定义了对最终用户有用的功能。
- 控制反转: 当我们从库中调用一个方法时,我们处于控制之中。但在框架中,控制是反向的,即框架调用我们。
参考:
本文由 埃克塔·戈尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。