能夠對比某個類庫如utils包和某個框架如mybatis增強理解正則表達式
1、 框架與類庫的區別mybatis
一、結構上,框架內部是高內聚的,而類庫內部則是相對鬆散的。框架
二、框架封裝了處理流程的控制邏輯,而類庫幾乎不涉及任何處理流程和控制邏輯。
正是因爲框架對處理流程的控制邏輯進行了封裝,才使得框架成爲一個應用的骨架。框架中的處理流程和控制邏輯須要通過精心的設計,由於全部使用了該框架的應用程序都會複用該設計。分佈式
三、框架具備IOC(控制反轉)能力,而類庫沒有。
IOC,即俗稱的好萊塢模式(Don’t call us, we will call you)。對於類庫中的元素來講,一般都是由咱們的應用來調用它;而框架具備這種能力――在適當的時候調用咱們應用中的邏輯。這種能力是經過框架擴展點(或稱爲「插槽」)來作到的――具體的應用經過擴展點注入本身的邏輯,而在適當的時候,框架會調用這個擴展點中已註冊的邏輯。實際上,.NET中的事件(event)發佈、預約機制就是IOC的一個表明性例子。spa
四、框架專一於特定領域,而類庫倒是更通用的。
框架着力於一個特定領域的解決方案的完整表達,而類庫幾乎不針對任何特定領域。好比,本書中提到的通訊框架只適用於須要在TCP/UDP基礎上直接構建通訊的應用程序,而像正則表達式這樣的類庫卻可使用在各類不一樣的應用中。.net
五、框架一般創建在衆多類庫的基礎之上,而類庫通常不會依賴於某框架。hibernate
2、通用框架與應用框架設計
若是要對框架進行進一步分類,則能夠根據框架針對的領域是否具備通用性而將它們分爲通用框架(General Framework)和應用框架(Application Framework)。通用框架能夠在不一樣類型的應用中使用,而應用框架只被使用於某一特定類型的應用中。、blog
好比,ORM框架NHibernate就是一個通用框架,該框架能夠用於全部須要解決O/R映射的各類類型的應用中。而某個金融框架則是一個應用框架,它僅僅被用於金融類型的應用中。事件
能夠這麼說,通用框架所解決的是全部類型的應用都關心的「廣泛」問題,而應用框架解決的是某一特定類型的應用關心的問題。因此,若是咱們須要將某種類型的應用的核心業務邏輯流程提高到一個框架中,所獲得的這個框架就是一個應用框架。與通用框架相比,應用框架須要瞭解更多目標業務領域內的領域知識。
在實現具體的應用程序時,能夠採用一個應用框架與多個通用框架相結合的方式,這樣有利於快速、高質量的應用程序開發。好比,某個金融領域的一個應用,能夠採用金融框架做爲應用框架來解決與金融業務邏輯相關的問題,採用Nhibernate解決數據訪問,採用ESFramework解決應用中各分佈式系統之間的通訊。
下圖描述了類庫、框架和應用之間的層次關係。
框架和類庫的區別
固然,一個應用也能夠徹底不採用任何框架,而是直接從最基礎的底層API(如.NET Framework)開始構建。對於微型的系統,這種方式或許可行。但對於複雜大型的應用,困難度就可想而知了。