框架是否允许您抽象通用代码 - 但不是完整的方式(例如:抽象网络连接 - 而不是您实际使用的数据),并且没有解决任何特定的常见要求,而工具包有通用问题的解决方案(例如:对话框小部件)?
真实世界示例:Prototype是一个“框架”,但Dojo是一个“工具包”。
所以我的问题是,将框架称为框架并将其称为工具包的标准是什么?
答案 0 :(得分:25)
在Inversion of Control的文章中引用Martin Folwer:
控制倒置是其中的关键部分 什么使框架与a不同 图书馆。 图书馆本质上是一个 你可以调用的一组功能, 这些天通常组织成 类。每次通话都会做一些工作 将控制权交还给客户。
框架体现了一些抽象 设计,内置更多行为。 要使用它,您需要插入 你的行为进入了各个地方 框架通过子类化或 通过插入自己的类。的的 框架的代码然后调用您的代码 在这些方面。
简而言之,最大的区别在于,当框架调用代码时,代码会调用库。
答案 1 :(得分:12)
Framework在开发人员上强制执行一些设计模式,并为代码生成提供一些工具。这与我的第一句话很吻合,因为它以某种风格/模式生成代码 库为您提供了根据需要使用的功能。像C的stdio函数一样, C#的控制台,PHP的“内置”功能等 您可以将库视为一种API
答案 2 :(得分:9)
在我的书中,框架提供了一种结构,并鼓励或要求以某种方式使用它。如果开发人员想要以框架的方式执行操作,这可能会很好,因为很多事情都是自动化的,但如果开发人员想要偏离框架的意图则可能会很糟糕。
另一方面,工具包提供了可以一起使用或单独使用的各种工具。它更灵活,但需要代表程序员付出更多努力。