《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > MVC模式在Java多層體系結構中各層模塊的運用

MVC模式在Java多層體系結構中各層模塊的運用

2009-01-09
作者:王靖文

??? 今天,軟件復用技術已經深入人心,如何提高軟件模塊的復用程度成為了人們所熱心的話題。一個好的模塊,要求有很好的靈活性、移植性和擴展性。而在目前的三層應用體系結構下,又該怎樣來設計構建一個復用度高的模塊才能達到降低開發成本、縮短開發周期的目的呢?我們幸運的發現將經典的MVC模式運用到各層模塊的內部劃分中,將使得模塊的設計也變得清晰簡單起來,并能很好的滿足模塊的靈活性、擴展性等要求,使得模塊的可復用程度得到了很大的提高。?

一、關于MVC設計模式?

??? MVC模式(Model-View-Controller)最初是在對應用程序進行設計時,總結出來的一個高效的設計模式,它對程序中的各種元素進行抽象歸納,將程序的表示邏輯和業務邏輯分離,使得在設計程序結構時,思路清晰結構明確,也方便以后對表示層進行更改,而對于它和后臺業務邏輯的接口也劃分清晰,極大的減少了后臺業務邏輯變化對前臺界面的影響。目前流行的Struts技術就是基于MVC設計模式的Java Web前端應用。?

二、在模塊內部設計中引入MVC設計模式的構想?

??? 實際上,MVC模式同時也為應用程序模塊的內部設計提供了一個思路,當對一個模塊進行設計時,它所面臨的問題是怎樣將內部封閉起來,實現某些固定的功能,并對外提供各種可能的接口,能盡量好的與環境融合,同時能夠和其他模塊進行組裝搭配。同時還要能夠進行一些擴展,以更好的適應應用程序的環境。為了完成模塊的各種功能,保證正確性和靈活性,怎樣對模塊進行設計和內部劃分就變得重要了。而MVC的劃分思路正好能很不錯的應用于模塊的設計之中。?

圖1 將MVC模式運用于模塊內部設計中?

??? MVC中講求用View層作為表示層面對客戶,它負責對外界客戶的交互。同樣,一個完善的模塊也需要一個專門對外的表示層,它專注于為外界各種情況提供接口(可擴展可替換的接口)。它便是模塊的View層。向內,它將可能輸入的各種參數轉化為內部統一的參數形式。向外,它根據配置的環境參數,將要表達的數據轉換成符合當前環境特征的數據格式向外表示。外界只能通過它跟模塊打交道,它負責了模塊內外的聯系,并進行模塊內外數據格式轉換。View層的獨立設計使得接口可以即時進行更換和定制,讓模塊能靈活用于各種不同系統的環境下,這樣就能有效的提高模塊重用度。?

??? 而普通MVC中的Model層,要求封裝系統的狀態,使用一組數據來表示系統的一個狀態。同樣在模塊中,需要將模塊內核的數據封裝起來作為模塊的一個狀態。控制層的每一次操作都在讀取原狀態,進行數據處理,最后再寫入新狀態,整個過程就是將原狀態改變到另一個狀態。這樣減輕了模塊內部的復雜度,方便模塊內部的分工。甚至可以說Model就是模塊內部的數據池。?

??? MVC中的Control層也即控制層,負責響應View層傳送過來的請求,它將Model中的數據進行運算,再將結果寫回到Model中。同樣在模塊中,可將實現模塊功能的部分作為Control層。因為只有它和核心運算部件打交道,從而來改變模塊的狀態。它也始終只用模塊內部統一的數據格式來與核心部件通訊,而這種數據格式正是在View層根據外界輸入的參數生成或轉換過來的。?

??? 通過在模塊內部設計中模仿MVC模式,可以使模塊的設計清晰化,對模塊的各部分可以進行有重點的設計,有利于提高模塊的質量和靈活性。由此而產生的應用程序更有強大的生命力。?

三、MVC模式在多層模塊設計中的運用?

??? 對于大型系統程序,分層設計思想是很適合的當前開發的。將應用程序分為幾個層次(客戶層,應用層,數據層),可使各層著重于各自的重點。而各層模塊也可以在分層思想的框架下來進行設計。比較簡單的作法就是,從上至下,在每一層都將各自及以下各層組合為一個模塊。下面簡要介紹在各層組織模塊的一些想法。?

圖2 MVC模式在多層模塊設計中的運用?

?

??? 在客戶層,我們可以將客戶層和下面的各層合在一起看作一個模塊。下層的模塊可視為本層模塊中的子模塊。若在該層采用Struts技術將使得整個結構非常清晰。在該層的模塊化可以這樣進行:模塊的View層采用JSP和Java Servlet來定制,運用JSTL和Struts標簽庫技術,使得表達更加靈活。甚至可以使用自定義標簽來擴展JSP功能,比如可以生成餅狀圖等各種統計圖形。對于客戶層模塊中的Model,Struts框架提供了很好的ActionForm。它可以使用自己定制的JavaBean,也可以由Struts框架根據配置動態生成的ActionForm。View層將一切收集到的數據都放入ActionForm中,然后通知控制層來處理數據。Struts框架在Control層使用ActionServlet來對數據處理進行控制的。當然在客戶層的數據處理更多的是對數據格式的轉化,對數據的整理封裝,然后通知它的核心運算部件(即應用層的模塊)來進行運算處理。?

??? 在應用層,同樣將應用層和下面的數據層組合在一起成為一個模塊。在這一模塊中它的View層由Action充當,它負責對外進行數據的表達和傳遞。而模塊中對數據進行保存和傳遞的Model可以由值對象VO來充當,它負責封裝view層的數據然后交由控制層處理。而控制層中實現業務邏輯的控制類也是將數據寫入值對象VO后,交由view層來向外界表達的。?

??? 在數據層,它的模塊獨立性更強。在該層的view層,將數據轉化為直接跟存儲有關系的數據,交由控制層來處理。這一個功能可由各自的DAO來完成,它們各自將數據轉換為統一的ObjectDAO能操作的數據格式(比如封裝了SQL語句以及其他指令和結果的一個數據包),然后統一調用一個實際與數據庫進行交互的代理ObjectDAO。而這個代理就充當了模塊的Control層。它負責最終調用數據庫操作來改變數據,改變模塊的狀態。?

四、結束語?

??? 作為一個擁高復用程度的模塊,它的要求是能盡量廣泛的用在各種環境下,能以最小的代價自適應環境,保證模塊能正確的完成外界交給的任務。用于應用程序層次設計的MVC思想正好為模塊內部的設計提供了一個很不錯的想法,即控制和數據分開的思想,將模塊內部中邏輯處理和數據封裝分開來設計。這樣簡化了內部設計的難度,也提高了模塊的靈活性進而提高了模塊的復用度。MVC的思想往往能為復雜的任務提供清晰的設計方案。所以我們應該在程序設計中多借鑒它的思想,往往能設計出清晰簡單的方案。?

參考文獻:?

1.?????? Chuck Cavaness? 《Programming Jakarta Struts》 O'Reilly 2002.11 ?

2.?????? CT Arrington 著 《Enterprise Java with UML 》中文版? 機械工業出版社 2003.7?

3.?????? Ivar Jacobson,Martin Griss,Patrik Jonsson 《Software Reuse Architecture,Process and Organization for Business Success》 機械工業出版社 2003.1?

4.?????? James Turner, Kevin Bedell 《Struts Kick Start》 Sams Publishing 2002.11?

5.?????? William Crawford, Jonathan Kaplan? 《J2EE Design Patterns》? O'Reilly 2003.9?

6.?????? J2EE Specification,http://java.sun.com ?

7.?????? XML Specification,http://www.w3.org?

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
午夜一区在线| 欧美一区二区视频在线观看2020 | 久久精品99无色码中文字幕| 亚洲深夜福利| 99在线|亚洲一区二区| 亚洲日本欧美天堂| 亚洲激情视频| 91久久一区二区| 亚洲欧洲一区二区天堂久久 | 久久视频精品在线| 久久久久国产精品一区| 久久精品二区| 久久久久国产精品午夜一区| 久久免费国产精品1| 久久婷婷国产综合尤物精品 | 国产精品久久91| 国产精品二区在线| 国产精品一区视频| 国产视频不卡| 黄色成人在线免费| 精品1区2区3区4区| 一区视频在线播放| 亚洲福利久久| 亚洲日本中文字幕| 亚洲美女中出| 亚洲一区二区在线免费观看| 亚洲欧美日韩一区在线观看| 欧美在线三区| 亚洲激情在线观看| 在线亚洲电影| 亚洲免费伊人电影在线观看av| 亚洲欧美韩国| 久久久久久久综合狠狠综合| 欧美成年人网站| 欧美另类高清视频在线| 欧美精品麻豆| 国产精品午夜av在线| 国产一区二区三区日韩欧美| 在线免费观看欧美| 日韩视频在线免费观看| 亚洲一区二区三区在线观看视频 | 久久一区二区三区超碰国产精品| 免费91麻豆精品国产自产在线观看| 欧美高清一区二区| 欧美午夜一区二区| 国产色视频一区| 亚洲激情视频网| 亚洲一区三区电影在线观看| 亚洲第一毛片| 亚洲性线免费观看视频成熟| 欧美一区免费| 欧美成人黑人xx视频免费观看| 欧美日韩亚洲成人| 国产婷婷色一区二区三区| 亚洲国产精品久久久| 99成人在线| 久久黄色级2电影| 亚洲视频每日更新| 久久久久久久综合狠狠综合| 欧美日韩一区二区三区四区在线观看| 国产精品亚洲产品| 亚洲经典三级| 亚洲自拍偷拍麻豆| 亚洲人成网站999久久久综合| 亚洲校园激情| 欧美freesex交免费视频| 国产精品国产三级国产| 在线精品高清中文字幕| 亚洲特级片在线| 亚洲人精品午夜| 欧美在线短视频| 欧美日韩hd| 黄色另类av| 亚洲男女自偷自拍| 一本久久综合| 免费h精品视频在线播放| 国产精品久久二区| 亚洲级视频在线观看免费1级| 欧美亚洲一区| 亚洲免费视频观看| 欧美日本一道本| 狠狠噜噜久久| 亚洲免费一级电影| 99国产精品久久久久老师| 久久se精品一区二区| 国产精品theporn| 亚洲激情精品| 亚洲高清不卡在线| 久久精彩视频| 欧美四级在线观看| 亚洲午夜在线观看视频在线| 久久久免费精品| 欧美精品在线网站| 在线电影欧美日韩一区二区私密| 亚洲欧美清纯在线制服| 国产精品99久久久久久久久久久久| 巨乳诱惑日韩免费av| 国产日本亚洲高清| 亚洲视频精品在线| 中日韩美女免费视频网址在线观看| 免费日本视频一区| 好看不卡的中文字幕| 亚洲欧美日韩视频一区| 亚洲影院一区| 欧美三区在线视频| 日韩天堂av| 在线天堂一区av电影| 欧美国产日韩二区| 在线日韩日本国产亚洲| 亚洲成人资源| 久久先锋影音| 国语自产偷拍精品视频偷| 午夜伦欧美伦电影理论片| 亚洲欧美日韩在线一区| 国产精品qvod| 亚洲在线视频网站| 午夜老司机精品| 国产精品婷婷| 亚洲欧美日韩专区| 久久不射中文字幕| 国产亚洲毛片| 久久成人免费网| 久久一二三国产| 亚洲第一页在线| 亚洲人成免费| 欧美激情亚洲另类| 亚洲精品日本| 在线一区二区三区做爰视频网站| 欧美日韩国产不卡在线看| 日韩视频不卡| 亚洲在线电影| 国产欧美日韩在线观看| 欧美在线观看视频一区二区| 久久久久青草大香线综合精品| 国产欧美欧洲在线观看| 欧美在线播放| 蜜桃久久精品一区二区| 91久久久在线| 宅男噜噜噜66国产日韩在线观看| 欧美吻胸吃奶大尺度电影| 亚洲网在线观看| 久久激情久久| 在线免费高清一区二区三区| 日韩一级精品视频在线观看| 欧美日韩一区二区在线观看| 亚洲一区免费视频| 久久久精品性| 亚洲国产综合在线看不卡| 亚洲天堂av高清| 国产日韩欧美综合| 亚洲国产中文字幕在线观看| 欧美剧在线观看| 亚洲图片欧洲图片av| 久久久久这里只有精品| 亚洲黄网站黄| 欧美亚洲一区三区| 狠狠色综合日日| 99精品国产一区二区青青牛奶| 国产精品成人免费视频| 欧美一区二区三区在线| 欧美国产日韩精品免费观看| 亚洲天堂免费观看| 美女在线一区二区| av不卡免费看| 久久久爽爽爽美女图片| 亚洲区第一页| 久久成人羞羞网站| 亚洲国内欧美| 欧美自拍偷拍| 亚洲精品一区在线观看| 久久av一区二区| 亚洲精品国偷自产在线99热| 欧美亚洲综合网| 亚洲精品视频免费| 久久av老司机精品网站导航| 亚洲清纯自拍| 久久精视频免费在线久久完整在线看| 亚洲第一色中文字幕| 性欧美长视频| 亚洲精品乱码久久久久久日本蜜臀| 欧美一区二区高清| 亚洲人成亚洲人成在线观看图片| 羞羞答答国产精品www一本| 亚洲高清在线| 久久av红桃一区二区小说| 日韩视频在线免费观看| 麻豆精品在线播放| 亚洲在线观看| 欧美日韩免费观看一区二区三区| 欧美综合第一页| 国产精品国产三级国产aⅴ无密码| 亚洲国产精品va在线看黑人动漫 | 国产精品福利在线观看网址| 91久久夜色精品国产九色| 国产日韩三区| 午夜精品久久久久久久白皮肤| 亚洲国产精品久久久久婷婷884| 欧美一区二区三区另类 | 国产精品久久毛片a| 亚洲精品乱码久久久久久|