MVC框架

MVC框架的實現

在開始設計MVC框架前,首先要對MVC框架做一個簡單的介紹。MVC(Model View Controller)的中文名稱叫做模型視圖控制器模型,就是因爲它的英文名字太流行了,中文名字反而被忽略了。它誕生於20世紀80年代,原本是爲桌面應用程序建立起來的一個框架,現在反而在Web應用中大放異彩(其實也可以把B/S認爲是C/S的瘦化結構),MVC框架的目的是通過控制器C將模型M(代表的是業務數據和業務邏輯)和視圖V(人機交互的界面)實現代碼分離,從而使同一個邏輯或行爲或數據可以具有不同的表現形式,或者是同樣的應用邏輯共享相同、不同視圖。比如,可以在IE瀏覽器訪問某應用網站(頁面格式遵守HTML標準),也可以用於手機訪問。

MVC框架有兩個版本,一個Model1,也就是MVC的第一個版本,它的視圖中存在者大量的流程控制和代碼開發,也就是控制器和視圖還具有部分的耦合。也有人不認爲Model1屬於MVC框架,那也說得通,因爲在JSP頁面中融合了控制器和視圖的功能,這其實就是早期的開發模式,開發一堆的JSP頁面,然後再開發一堆的JavaBean,JavaBean就是模型了,它只是把JSP和JavaBean拆分開了。Model2版本則是提倡視圖和模型的徹底分離,視圖僅僅負責展示服務,不再參與業務的行爲和數據處理。我們舉例來說明MVC框架是如何運行的。
在做Web開發時,例如開發一個數據展示界面,從一張表中把數據全部讀出,然後展示到頁面上,也是一個簡單的表格,其中頁面展示的格式就是視圖V,怎麼從數據庫中取得數據則是模型M,那麼控制器C是做什麼的呢?它負責把接收的瀏覽器的請求轉發通知模型M處理,然後組合視圖V,最終反饋一個帶數據的視圖到用戶端,數據處理流程如圖:

瀏覽器通過HTTP協議發出數據請求①,由控制器接收請求,通過路徑②委託給數據模型處理,模型通過與邏輯層和持久層的交互(路徑③④),把處理結果反饋給控制器(路徑⑤),控制器根據結果組裝視圖(路徑⑥⑦),並最終反饋給瀏覽器可以接受的HTML數據(路徑⑧)。整體MVC框架還是比較簡單的,但它帶來的優點非常多。

  • 高重用性
    一個模型可以有多個視圖,比如同樣是一批數據,可以是柱狀展示,也可以是條形展示,還可以是波形展示。
  • 低耦合
    一位模型和視圖分離,兩者沒有耦合關係,所以可以獨立地擴展和修改而不會產生相互影響。
  • 快速開發和便捷部署
    模型和視圖分離,可以使各個開發人員自由發揮,做視圖地人員和開發模型地人員可以制定自己的計劃,然後在控制器地協作下實現完整的應用邏輯。

    MVC的系統架構

    我們設計的MVC框架包含以下模塊:核心控制器(FilterDispachter)、攔截器(Interceptor)、過濾器(Filter)、模塊管理器(Model Action)、視圖管理器(View Provider)等,基本上一個MVC框架上常用的功能我們都具備了,系統架構圖如下:

各個模塊的職責如下:

  • 核心控制器
    MVC框架的入口,負責接收和反饋HTTP請求。
  • 過濾器
    Servlet容器內的過濾器,實現對數據的過濾處理。
  • 攔截器
    對進出模型的數據進行過濾,他不依賴系統容器,只過濾MVC框架內的業務數據。
  • 模型管理器
    提供一個模型框架,該框架內的所有業務操作都應該是無狀態的,不關心容器對象,例如Session、線程池等。
  • 視圖管理器
    管理所有的視圖,例如提供多語言的視圖等。
  • 輔助工具
    它其實就是一大堆的輔助管理工具,比如文件管理,對象管理等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章