2009-09-12 138 views
18

框架是否允許您抽象通用代碼 - 但不是以完整的方式(例如:抽象一個網絡連接 - 但不是您實際上對數據做什麼),並且不解決任何特定的通用需求,而工具箱具有解決方案到一般問題(例如:對話框小部件)?框架和工具包之間的主要區別是什麼?

真實世界例如:Prototype是一個「框架」,但Dojo是一個「工具包」。

所以我的問題是,調用某個框架vs調用它作爲一個工具包的標準是什麼?

回答

12

Framework對開發人員強加了一些設計模式,併爲代碼生成提供了一些工具。這與我的第一句話很吻合,因爲它以某種風格/模式生成代碼。
圖書館爲您提供功能,供您隨意使用。像C的標準輸入輸出功能, 的控制檯C#中,「中建」 PHP等功能
。你可以把圖書館作爲一種API

9

的在我的書中,一個框架提供了一個結構,鼓勵或要求它以某種方式使用。如果開發人員想要以框架的方式完成任務,這可能會很好,因爲很多事情都是自動的,但如果開發人員想要偏離框架的意圖,這可能會很糟糕。

另一方面,工具包提供了可以一起使用或分開使用的各種工具。它更加靈活,但代表程序員需要更多努力。

25

Inversion of Control引用馬丁Folwer在他的文章:

控制反轉是 一個關鍵部分是什麼讓一個 庫不同的框架。 一個庫本質上是一組功能,你可以調用, 這幾天通常組織成 類。每個呼叫都有一些工作,並且 將控制權返回給客戶端。

一個框架體現了一些抽象 設計,內置了更多的行爲。 爲了使用它,你需要框架可以通過繼承或 插入 您的行爲變成不同的地方在你自己的堵漏類。 框架的代碼然後在這些點調用您的代碼 。

簡而言之,最大的區別在於您的代碼在框架調用您的代碼時調用庫。

相關問題