方又強(qiáng)
(武昌理工學(xué)院,湖北武漢,430223)
MVC架構(gòu)體系降低耦合性措施探討
方又強(qiáng)
(武昌理工學(xué)院,湖北武漢,430223)
當(dāng)前MVC架構(gòu)體系在軟件開發(fā)中的應(yīng)用十分普遍,通過應(yīng)用該框架體系可以降低系統(tǒng)的耦合性,本文對此進(jìn)行分析,分析可MVC架構(gòu)組成及降低耦合性的措施。
MVC;耦合性;降低
最早提出MVC架構(gòu)是Trygve Reenskaug,在1979年提出,提出之后當(dāng)時被廣泛應(yīng)用在熱門語言Smalltalk中,由于該架構(gòu)的設(shè)計界面具有交互性和多窗口等特點,因此當(dāng)時被Windows、Macintosh系統(tǒng)所采納。隨著軟件設(shè)計模式的出現(xiàn)和面向?qū)ο蠹夹g(shù)的不斷成熟,MVC架構(gòu)也越來越完善,成為一種典型代表的面向?qū)ο笤O(shè)計模式。MVC架構(gòu)圖見圖1,使用MVC架構(gòu)對軟件進(jìn)行開發(fā),將開發(fā)過程切割成模型(Model)、視圖(View)、控制器(Controller)3個主要單元。這三個單元相互協(xié)作完成用戶提交的每項任務(wù)。使用MVC架構(gòu)可以實現(xiàn)程序的動態(tài)設(shè)計,并能對程序進(jìn)行后續(xù)修改和擴(kuò)展簡化,使某一部分功能實現(xiàn)可重復(fù)利用。此外,該架構(gòu)還簡化了軟件設(shè)計的復(fù)雜程序,使程序結(jié)構(gòu)更加直觀。MVC架構(gòu)三者的協(xié)作關(guān)系如下:用戶發(fā)送請求給控制器,由控制器決定調(diào)用哪個模型來處理;然后模型根據(jù)用戶的請求進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理,并返回與之相對應(yīng)的數(shù)據(jù);最后控制器將返回的數(shù)據(jù)填充到相應(yīng)的視圖,并通過視圖呈現(xiàn)給用戶。

圖1 MVC 架構(gòu)
Model是一組類,它是應(yīng)用程序的關(guān)鍵核心部分,代表了業(yè)務(wù)規(guī)則,用來說明數(shù)據(jù)的處理、修改等操作規(guī)則,它為Controller對象和View對象提供了被Model對象封裝的應(yīng)用業(yè)務(wù)邏輯;View是應(yīng)用程序的用戶界面,和用戶的應(yīng)用有關(guān),通過該界面可以實現(xiàn)用戶的輸入和輸出。通過View對象可以訪問Model對象中的數(shù)據(jù),并顯示Model對象的狀態(tài)。通過“形式與內(nèi)容”可以描述View對象與Model對象的關(guān)系:①如果改變Model對象中的狀態(tài),則View對象的用戶界面顯示內(nèi)容也會發(fā)生相應(yīng)的改變,達(dá)到內(nèi)容與形式的一致;②不同的用戶對同一個Model對象發(fā)出不同的請求,可以產(chǎn)生多個View對象。
Controller對象的作用是處理用戶、特定應(yīng)用程序邏輯及整個應(yīng)用程序流通信。通過Controller可以實現(xiàn)Model對象與View對象之間的同步,也就是完成如下動作:①以用戶對View對象的操作為基礎(chǔ)對Model對象進(jìn)行更新;②如果Model對象狀態(tài)發(fā)生改變及時將這種改變反饋到View對象上。如.NET平臺用DataSet對象可以輕易實現(xiàn)用戶操作的信息反饋,因為一個DataSet對象可以包含多個DataTable對象,每個DataTable對象都可以和數(shù)據(jù)庫中的數(shù)據(jù)建立聯(lián)系,生成用戶請求數(shù)據(jù)。通過Controller層可以實現(xiàn)Model層與View層之間溝通,對用戶的請求進(jìn)行分派,并選擇合適的視圖顯示請求結(jié)果,同時也可以對用戶的輸入進(jìn)行解釋并將它們映射為模型層可執(zhí)行的操作。
有上述分析可知,在MVC的架構(gòu)中,應(yīng)用程序的界面和業(yè)務(wù)邏輯等應(yīng)用程序的其他部分是完全分離的,因此,能夠?qū)γ坎糠知毩⑦M(jìn)行設(shè)計,降低了業(yè)務(wù)邏輯、用戶的控制動作和業(yè)務(wù)的實際狀況的展現(xiàn)之間的藕合限制。既可以為同一個模型和控制器選擇不同的界面,也可以對同一個應(yīng)用程序選擇不同的數(shù)據(jù)源和模型,還可以通過修改控制器對應(yīng)用程序響應(yīng)使用者動作的進(jìn)行改變。
2.1應(yīng)用StrutS框架進(jìn)行設(shè)計
Struts框架是基于MVC模式,是APache組織的一個開放源碼項目,具備重用性、靈活性和模塊化的優(yōu)點,應(yīng)用Struts框架可以簡化基于MVC的Web開發(fā)程序,并且縮短開發(fā)時間。Struts的主要實現(xiàn)技術(shù)是:Servlet、JSP和Custom Tag Library。StrutS框架包括Actionservlet、Action處理器、Controller,其處理流程如下:Actionservlet接收并處理客戶請求,接收請求之后將其映射到Action處理器對象進(jìn)行處理。Action處理對象訪問ActionForm中的數(shù)據(jù),根據(jù)用戶請求調(diào)用后臺封裝了業(yè)務(wù)邏輯的Bean組件,返回處理結(jié)果到Action處理器,Action處理器對象根據(jù)處理結(jié)果通知Controller,Controller進(jìn)行下一步的處理。由于Struts框架的Actionservlet、Action處理器、Controller三部分相分離,因此,采用Struts框架對MVC框架進(jìn)行設(shè)計,可以降低總架構(gòu)的耦合性。
2.2將MVC框架體系與三層結(jié)構(gòu)技術(shù)結(jié)合應(yīng)用
在對軟件進(jìn)行設(shè)計時,其三層結(jié)構(gòu)包括表現(xiàn)層、業(yè)務(wù)邏輯層及數(shù)據(jù)訪問層。(1)UI(表現(xiàn)層):該層實際上是用戶界面,用戶在使用某個軟件系統(tǒng)時看到的操作界面。(2)BLL(業(yè)務(wù)邏輯層):通過業(yè)務(wù)邏輯層實現(xiàn)對數(shù)據(jù)層的操作,處理數(shù)據(jù)業(yè)務(wù)邏輯及相關(guān)事務(wù)。(3)DAL(數(shù)據(jù)訪問層):通過該層可以直接對數(shù)據(jù)庫進(jìn)行操作,實現(xiàn)數(shù)據(jù)存儲的增添、修改、刪除、更新、查找等功能。由于軟件設(shè)計包含三層結(jié)構(gòu),因此采用傳統(tǒng)方法對軟件進(jìn)行設(shè)計,需要編寫大量的代碼,并且這些代碼的可重用性差,代碼模塊之間的耦合性較高,而采用MVC與三層結(jié)構(gòu)技術(shù)相結(jié)合對軟件進(jìn)行開發(fā)設(shè)計,可以減少代碼開發(fā)工作量,將表示層和業(yè)務(wù)邏輯層及數(shù)據(jù)層分離,降低了代碼的耦合性,提高了系統(tǒng)的可維護(hù)性及可復(fù)用性。
MVC框架體系在軟件設(shè)計和開發(fā)中有著廣泛的應(yīng)用市場,并且具有十分的重要作用和地位。本文簡要介紹了MVC框架體系結(jié)構(gòu),并對其框架體系耦合性的降低進(jìn)行分析,具有重要的研究意義。
[1] Ning W,Liming L,Yanzhang W.Research on the Web Information System Development Platform Based on MVC Design Pattern.IEEE,2008 3:203-206.
[2] Yan Cao,Lina Yang,Yanli Yang.Machine Tool Distributed Cooperative Design System Based on Extended MVC-Based Web Application Framework and XML Interoperable Information Model.IEEE,2008:423-428.
Discussion on Reducing Coupling Measures in MVC Architecture
Fang Youqiang
(Wuchang University of Technology,WuHan Hubei,430223)
The application of MVC architecture in software development is very popular. The application of this framework can reduce the coupling of the system. In this paper, the MVC architecture is analyzed and the measures to reduce the coupling are analyzed.
MVC; coupling;reduce