摘要:本文首先在對MVC的設計模式和信息管理系統等概念分析和理解的基礎上,綜合了J2EE、EJB、JSP等技術,闡述MVC的設計模式是如何運用到信息管理系統中去。文章還以具體的系統為例子說明如何運用MVC的設計模式來劃分模型、視圖與控制器三個不同的組件。
關鍵詞:MVC的設計模式;信息管理系統
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)33-1284-02
Realization and Research of MVC Pattern in the information management system
LIAO Yue-jun
(NanBo Occupation and Technique College of DongGuan,computer technology department,Dongguan 523080, China)
Abstract: On the basis of the analysis and understanding of the MVC design pattern and information management system, with the help of J2EE, EJB and JSP etc., the thesis explains how the MVC design pattern apply to the information management system. Also the thesis gives an example of concrete system to show how to use MVC to divide model, view and controlle.
Key words: MVC design pattern; information management system
1 MVC設計模式
在目前國內的面向中小型電子政務的Web應用程序設計中,以單純的ASP/JSP/Servlet代碼構建的基于服務器端運行的系統占大多數。但上述系統有一個共同的缺陷,就是當業務邏輯越來越復雜的時候,系統構建所帶來的復雜度和所耗費的成本將進一步提升,由于結構的不清晰所帶來的系統可讀性也進一步降低,后期的維護和擴展難度進一步增加. 鑒于此,在J2EE領域,業界通常采用在Servlet集成一些可復用的組件比如EJB等以及采用MVC的設計模式,來使得系統結構清晰化,以及實現軟件的可復用、可擴展和高效率。
MVC由Trygve Reenskaug提出,首先被應用在SmallTalk-80環境中,是許多交互和界面系統的構成基礎。MVC結構是為那些需要為同樣的數據提供多個視圖的應用程序而設計的,可以使多個視圖共享一個模型,模型響應用戶請求并返回響應數據,視圖負責格式化數據并把她們呈現給用戶,它很好的實現了數據層、業務邏輯層與表示層的分離。MVC作為一種開發模型,通常用于分布式應用系統的設計和分析中,以及用于確定系統各部分間的組織關系。對于界面設計可變性的需求,MVC(Model-View-Controller)把交互系統的組成分解成模型、視圖、控制器三種部件。
視圖部件是用戶看到并與之交互的界面,它把表示模型數據及邏輯關系和狀態的信息以特定形式展示給用戶。它從模型獲得顯示信息,對于相同的信息可以有多個不同的顯示形式或視圖,并能接收用戶的輸入數據,但是它并不能進行任何的實際業務處理。
控制器部件是處理用戶與軟件的交互操作的,其職責是控制提供模型中任何變化的傳播,確保用戶界面于模型間的對應聯系;它接受用戶的輸入,將輸入反饋給模型,進而實現對模型的計算控制,是使模型和視圖協調工作的部件,比如說當WEB用戶單擊WEB頁面種的提交按鈕來發送HTML表單時,控制器便接收請求并調用請求相應的模型組件區處理請求,然后調用相應的視圖來顯示模型返回的數據。
模型部件保存由視圖顯示,由控制器控制的數據,它是應用程序的主體部分;它封裝了問題的核心數據、邏輯和功能的計算關系,它獨立于具體的界面表達和I/O操作;模型組件包括了業務數據和業務邏輯,一個模型可以為多個視圖提供數據,正由于此同一個模型可以被多個視圖重用,故提高了軟件代碼的可重用性。
模型、視圖與控制器的分離,使得一個模型可以具有多個顯示視圖。如果用戶通過某個視圖的控制器改變了模型的數據,所有其它依賴于這些數據的視圖都應反映到這些變化。因此,無論何時發生了何種數據變化,控制器都會將變化通知所有的視圖,導致顯示的更新。這實際上是一種模型的變化-傳播機制。模型、視圖、控制器三者之間的關系和各自的主要功能,如圖1所示。
2 MVC在系統中的實現設計
在實現基于MVC的系統開發應用中,首先我們在設計階段要完成的有以下五步工作,如圖2所示。

圖1MVC設計設計模式
2.1 分析應用問題,對系統進行分離
分析應用問題,分離出系統的內核功能、對功能的控制輸入、系統的輸出行為三大部分。設計模型部使其封裝內核數據和計算功能,提供訪問顯示數據的操作,提供控制內部行為的操作件以及其他必要的操作接口。以上形成模型類的數據構成和計算關系。這部分的構成與具體的應用問題緊密相關。
2.2 設計和實現每個視圖JSP
設計每個視圖的顯示形式,它從模型中獲取數據,將它們顯示在屏幕上。視圖通過顯示的形式,把信息轉達給用戶。不同視圖通過不同的顯示,來表達模型的數據和狀態信息。每個視圖有一個更新操作,它可被變化-傳播機制所激活。當調用更新操作時,視圖獲得來自模型的數據值,并用它們來更新顯示。
2.3 設計和實現每個控制器CMD
對于每個視圖,指定對用戶操作的響應時間和行為。在模型狀態的影響下,控制器使用特定的方法接受和解釋這些事件。控制器的初始化建立起與模型和視圖的聯系,并且啟動事件處理機制。事件處理機制的具體實現方法依賴于界面的工作平臺。
2.4 設計和實現模型BO
模型包含了應用問題的核心數據、邏輯關系和計算功能,它封裝了所需的數據,提供了完成問題處理的操作過程。控制器依據I/O的需要調用這些操作過程。模型還為視圖獲取顯示數據而提供了訪問其數據的操作。
2.5 設計系和實現統的配置文件
在設計和實現視圖JSP、控制器CMD和模型BO后,整個系統還不能直接運行,還得把視圖、控制器和模型三部分邏輯上聯系起來,這就需要設計項目的配置文件:resmap.xml和application.xml文件,這樣整個系統就邏輯上聯系起來了,我們可以用圖3來表示他們之間的邏輯關系。
從圖3中,我們可以看出MVC模式的處理過程是:首先由控制器接收用戶的請求,并決定應該調用哪個模型來進行業務處理,然后模型用業務邏輯來處理用戶的請求并返回數據,最后控制器用相應的視圖返回數據,并通過視圖組件JSP呈現給用戶。
3 MVC設計模式在系統設計中的優點和不足
通過具體的運用,我們發現MVC設計模式在開發和應用過程中有著大量的優點,但同時也存在著一些不足之處,大概總結如下:
MVC的優點表現在以下幾個方面:
1) 可以為一個模型BO在運行時同時建立和使用多個視圖JSP。變化-傳播機制可以確保所有相關的視圖及時得到模型數據變化,從而使所有關聯的視圖和控制器做到行為同步,也就是說一旦模型BO里的數據有變動,那么與之相對于的視圖JSP都做出相應的變化。

2) 視圖與控制器的可接插性,允許更換視圖和控制器對象,而且可以根據需求動態的打開或關閉、甚至在運行期間進行對象替換。
3) 模型的可移植性。因為模型是獨立于視圖的,所以可以把一個模型獨立地移植到新的平臺工作。需要做的只是在新平臺上對視圖和控制器進行新的修改。
4) 最后MVC設計模式還有利于軟件工程化管理。由于不同的組件各司其職,每一組件不同的應用具有某些相同的特征,有利于通過工程化、工具化產生管理程序代碼。
MVC的不足之處表現在以下幾個方面:
1) 增加了系統結構和實現的復雜性。對于簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增加結構的復雜性,并可能產生過多的更新操作,降低運行效率。
2) 視圖與控制器間的過于緊密的連接。視圖與控制器是相互分離,但確實聯系緊密的部件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。
3) 視圖對模型數據的低效率訪問。依據模型操作接口的不同,視圖可能需要多次調用才能獲得足夠的顯示數據。對未變化數據的不必要的頻繁訪問,也將損害操作性能。
以上三個方面是MVC設計模式在系統設計與開發過程中存在的不足之處,也是我們進一步探討和研究的重點。
參考文獻:
[1] 王映輝,等. 基于MVC 的軟件界面體系結構研究與實現[M]. 成都:計算機應用研究, 2004.
[2] 謝小樂,朱福喜,余振坤. J2EE經典實例詳解[M]. 北京:北京人郵電出版社, 2003.