框架、工具包和库之间的区别是什么?
当前回答
关于Mittag的正确答案:
一个简单的例子。假设您在一个类中实现了ISerializable接口(. net)。你利用了。net的框架特性,而不是库特性。你填上“白点”(就像mittag说的),你就完成了骨架。你必须事先知道框架将如何“反应”你的代码。实际上。net是一个框架,这就是我不同意Mittag观点的地方。
你的问题的完整的答案在本书的第19章(整个章节都是关于这个主题的)中给出了,顺便说一下,这是一本非常好的书(完全不是“只是为了Smalltalk”)。
其他回答
图
如果你是一个视觉学习者,下面的图表会让你更清楚:
(学分:http://tom.lokhorst.eu/2010/09/why-libraries-are-better-than-frameworks)
Martin Fowler在他关于反转控制的文章中讨论了库和框架之间的区别:
Inversion of Control is a key part of what makes a framework different to a library. A library is essentially a set of functions that you can call, these days usually organized into classes. Each call does some work and returns control to the client. A framework embodies some abstract design, with more behavior built in. In order to use it you need to insert your behavior into various places in the framework either by subclassing or by plugging in your own classes. The framework's code then calls your code at these points.
总结一下:你的代码调用一个库,而框架调用你的代码。
非常非常相似,框架通常比库更完善和完整,而工具包可以简单地是类似库和框架的集合。
这是一个非常好的问题,在本质上可能有一点点主观,但我相信这是我能给出的最好的答案。
我认为这有点主观。工具箱是最简单的。它只是一堆可以使用的方法和类。 库和框架的区别在于如何使用它们。很久以前,我在某个地方读到一个完美的答案。框架调用您的代码,但另一方面,您的代码调用库。
框架:安装在你的机器上,允许你与它交互。没有这个框架,你就不能向你的机器发送编程命令
库:旨在解决某一问题(或同一类别的若干问题)
工具包:许多代码片段的集合,可以在多个问题上解决多个问题(就像工具箱一样)