框架和工具包之间的主要区别是什么?

19

一个框架允许你抽象出通用代码,但并不是完全的(例如:抽象网络连接-但不涉及实际对数据的操作),并且不解决任何特定的常见需求;而工具包则提供了解决通用问题的解决方案(例如:对话框小部件)。

现实世界的例子:Prototype 是一个“框架”,而Dojo 是一个“工具包”。

那么我的问题是,什么样的标准可以称之为框架,什么样的标准可以称之为工具包?

3个回答

26

引用马丁·福勒在他关于控制反转的文章中所说:

控制反转是使框架与库不同的关键部分。 库本质上是一组可以调用的函数,这些天通常组织成类。每次调用都会执行一些工作并将控制返回给客户端。

框架体现了一些抽象的设计,具有更多的行为内置。为了使用它,您需要将您的行为插入到框架的各个位置中,无论是通过子类化还是通过插入自己的类。然后框架的代码在这些点调用您的代码

因此,简而言之,区别在于您的代码调用库,而框架调用您的代码。


12

框架在开发人员中强制执行某些设计模式,并提供一些代码生成工具。这与我的第一句话很配合,因为它以某种风格/模式生成代码。
库为您提供了功能,供您根据需要使用。就像C的stdio函数,C#的控制台,PHP的“内置”函数等一样
您可以将库视为某种API


9
在我的书中,框架提供了一种结构,并鼓励或要求以某种方式使用它。如果开发人员想按照框架的方式进行操作,这可能是好的,因为许多事情可以自动完成,但是如果开发人员想偏离框架的意图,则可能会有问题。
另一方面,工具包提供了各种可以一起或分开使用的工具。它更加灵活,但需要程序员付出更多的努力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接