官术网_书友最值得收藏!

1.3 MVC模式原理

MVC的英文全稱是Model-View-Controller,即“模式-視圖-控制器”。MVC模式起源于Smalltalk語言,它是Xerox PARC在20世紀80年代為編程語言Smalltalk-80發明的一種軟件設計模式,MVC模式的結構由以下3個部分組成:模型(Model)、視圖(View)和控制器(Controller)。MVC模式的結構圖如圖1.10所示。

圖1.10 MVC模式的結構圖

圖1.10的意思是:不管是視圖的改變還是模型的改變,或者控制器的改變,都會引起另外兩個的改變,按照模型層、視圖層、控制層進行分解,從而使得整個系統責任明確、接口清晰,加快了設計開發過程。下面分別來介紹這三個層次。

1.模型層

這里的模型就是指業務邏輯的處理和數據的存儲,它分為兩類模型:業務邏輯模型和數據模型。模型接收視圖請求的數據,并返回最終的處理結果。這里之所以把模型層單獨地抽取出來,是為了應對業務規則的變化,也是判斷開發人員是否優秀的設計依據。MVC并沒有提供模型的設計方法,而只告訴開發人員應該組織管理這些模型,以便于模型的重構和提高重用性。

數據模型就是指對數據的持久化,它實現了對視圖和模型之間交互的支持。實現時把“做什么(業務處理)”和“怎么做(業務實體)”分離,這樣可以實現業務邏輯的重用。對一個開發者來說,就可以專注于業務模型的設計。

2.視圖層

視圖層主要是用來展現用戶所需要的數據,它是用戶和系統進行交互的界面,這部分工作一般可以由美工人員來進行開發和維護,一般可以采用HTML頁面、XML、Servlet和Applet等技術。

一般來說,視圖只接收來自模型的數據并顯示給用戶,以及將用戶界面的輸入數據和請求傳遞給控制和模型。MVC設計模式對于視圖的處理僅限于視圖上數據的采集和處理,以及用戶的請求,而不包括在視圖上業務流程的處理,業務流程的處理和狀態的改變則交給模型層來處理。

視圖部分的大致處理流程是:頁面模板定義頁面的布局,頁面配置文件定義視圖標簽的具體內容,由頁面布局策略類初始化并加載頁面,每個用戶部件根據自己的配置進行初始化,加載校驗器并設置參數,以及事件的委托等,用戶提交后,通過了表示層的校驗,用戶部件把數據自動提交給業務實體即模型。

3.控制層

控制層就是一個分發器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請求。控制層就像一個中轉站,它從用戶那里接收請求,并根據用戶的請求,將模型與視圖匹配在一起,共同完成用戶的請求。

在實現上,為了能夠控制和協調每個用戶跨越多個請求的處理,控制機制應該以集中的方式進行管理。用戶提交一個表單或者單擊一個鏈接,控制層接收請求后,它本身并不處理業務信息,而是根據用戶的請求類型,把用戶的信息傳遞給相對應的模型,告訴模型做什么,等模型處理完畢后,再把模型處理后的數據選擇符合要求的視圖返回給用戶。

通過將模型、視圖與控制器分離,使得一個模型可以對應多個視圖,一個視圖可能對應多個模型。如果用戶通過某個視圖的控制器改變了模型的數據,所有其他依賴于這些數據的視圖都應反映出這些變化。因此,無論何時發生了何種數據變化,控制器都會將變化通知所有的視圖,導致顯示的更新。

模型、視圖、控制器三者之間的關系和各自的主要功能,即它的功能示意圖如圖1.11所示。

圖1.11 MVC模式的功能示意圖

通過上面的講解,可以得出MVC的處理過程:首先用戶通過視圖層發出請求,接著控制器接收用戶的請求,并決定應該調用哪個模型來進行處理,然后模型用業務邏輯來處理用戶的請求并返回數據,最后控制器將處理后的數據傳遞給視圖層,并通過視圖層展現給用戶。

主站蜘蛛池模板: 晋城| 河间市| 莱州市| 滁州市| 砀山县| 泊头市| 德江县| 大足县| 宜阳县| 恩平市| 苍梧县| 木兰县| 棋牌| 林西县| 化隆| 西城区| 炉霍县| 偃师市| 滦平县| 新乡市| 纳雍县| 运城市| 砚山县| 南安市| 嘉义县| 凌云县| 图们市| 商洛市| 嘉善县| 康保县| 遂川县| 越西县| 镇沅| 如东县| 徐闻县| 上犹县| 武穴市| 弥渡县| 禄丰县| 墨脱县| 景德镇市|