《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 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亚洲国产精品_日韩亚洲一区二区
久久本道综合色狠狠五月| 久久国产毛片| 国产欧美日韩精品a在线观看| 麻豆9191精品国产| 欧美在线观看日本一区| 99精品久久免费看蜜臀剧情介绍| 欧美一区二区三区喷汁尤物| 99国产精品久久久| 伊人色综合久久天天| 国产精品日韩欧美| 欧美日韩国产成人在线91| 免费久久99精品国产自| 午夜精品一区二区三区在线视 | 午夜精品一区二区在线观看| 日韩视频一区二区| 亚洲国产婷婷| 亚洲一区亚洲二区| 一本色道久久综合狠狠躁的推荐| 亚洲经典一区| 在线成人激情| 黄色精品一区二区| 国产嫩草一区二区三区在线观看| 欧美人成网站| 欧美国产大片| 久久先锋资源| 欧美一级夜夜爽| 亚洲欧美在线一区二区| av不卡在线观看| 亚洲美女精品成人在线视频| 亚洲精品一区二区三区四区高清| 亚洲激情精品| 亚洲精品偷拍| 夜夜躁日日躁狠狠久久88av| 99精品热视频| 一本色道**综合亚洲精品蜜桃冫 | 国产一区二区三区在线观看精品| 国产精品亚洲产品| 99re这里只有精品6| 中文亚洲欧美| 一区二区三区偷拍| 亚洲美女黄色片| 99re视频这里只有精品| 亚洲激情专区| 日韩视频―中文字幕| 亚洲精品一线二线三线无人区| 亚洲韩国日本中文字幕| 欧美一区二区三区四区夜夜大片| 欧美一区在线视频| 久久高清免费观看| 亚洲国产精品日韩| 日韩视频在线一区二区| 国产精品99久久久久久久vr| 亚洲午夜一区| 欧美一区二区三区在线| 久久都是精品| 免费在线播放第一区高清av| 在线观看成人网| 欧美无乱码久久久免费午夜一区| 国产精品久久久99| 欧美日韩在线第一页| 欧美日韩精品三区| 国产精品久久久久久久第一福利| 国产精品午夜春色av| 国产主播一区| 亚洲国产日韩精品| 99国产精品私拍| 亚洲欧美日韩国产成人精品影院| 先锋资源久久| 亚洲人妖在线| 亚洲一级黄色片| 久久国产精品网站| 欧美福利电影在线观看| 欧美午夜精品久久久| 亚洲国产欧美另类丝袜| 国产精品嫩草99a| 国产真实久久| 亚洲理论电影网| 小嫩嫩精品导航| 亚洲人成人一区二区三区| 亚洲一区中文| 久久综合久久综合这里只有精品| 欧美黄免费看| 国产欧美欧美| 亚洲国产精品一区二区尤物区| 一二三区精品| 亚洲国产高清自拍| 亚洲一区二区3| 免费欧美视频| 国产精品一区二区在线观看不卡| 1024成人| 久久久噜噜噜久久久| 韩国一区电影| 国产欧美日韩不卡| 亚洲日本电影| 宅男噜噜噜66一区二区66| 亚洲一区在线直播| 亚洲人成网站精品片在线观看| 一区二区欧美日韩| 久久九九有精品国产23| 欧美日韩在线电影| 伊人精品视频| 亚洲专区一区二区三区| 亚洲精品一区二区三区樱花 | 亚洲一区三区在线观看| 嫩草成人www欧美| 国产日产精品一区二区三区四区的观看方式 | 亚洲人成网在线播放| 欧美在线3区| 欧美亚洲不卡| 亚洲人体1000| 亚洲国产精品精华液2区45| 亚洲免费在线| 欧美日本一道本| 1024亚洲| 久久av资源网| 午夜精品久久久久久99热| 欧美巨乳在线观看| 红桃视频国产精品| 亚洲欧美偷拍卡通变态| 亚洲天堂av电影| 欧美久色视频| 亚洲国产欧美久久| 亚洲国产精品黑人久久久| 久久精品伊人| 国产精品一区二区三区四区| 91久久一区二区| 亚洲国产精品第一区二区三区 | 欧美中文字幕在线观看| 国产精品久久久久久久浪潮网站| 亚洲人精品午夜| 亚洲日本一区二区| 美女视频黄a大片欧美| 狠狠色丁香久久婷婷综合丁香| 午夜精品成人在线| 性欧美1819sex性高清| 国产精品久久久久一区二区| 制服丝袜激情欧洲亚洲| 中日韩男男gay无套| 欧美人与性动交α欧美精品济南到| 国产婷婷色一区二区三区在线| 亚洲色诱最新| 亚洲伊人网站| 欧美日韩国产免费| 在线不卡中文字幕播放| 亚洲福利视频专区| 久久久噜噜噜久久狠狠50岁| 国产精品入口66mio| 亚洲午夜久久久| 亚洲一线二线三线久久久| 欧美午夜精品电影| 制服丝袜亚洲播放| 亚洲欧美视频在线观看| 国产精品萝li| 亚洲欧美美女| 欧美在线中文字幕| 国产亚洲精品资源在线26u| 久久国产精品久久w女人spa| 久久亚洲一区二区三区四区| 在线观看av一区| 亚洲精品欧美日韩专区| 欧美日韩日韩| 亚洲美女在线观看| 亚洲综合首页| 国产乱肥老妇国产一区二 | 亚洲成人中文| 欧美成年人网| 亚洲另类视频| 亚洲免费网址| 国产一区二区三区四区五区美女| 久久黄金**| 欧美电影在线| 一区二区三区高清不卡| 性欧美video另类hd性玩具| 国内激情久久| 亚洲日本中文字幕| 欧美日韩亚洲高清一区二区| 亚洲一区二区av电影| 久久九九热免费视频| 亚洲高清不卡在线| 一区二区三区视频在线| 国产欧美va欧美va香蕉在| 亚洲丶国产丶欧美一区二区三区| 欧美精品色综合| 亚洲天堂网在线观看| 久久久国产成人精品| 亚洲国产精品一区二区www在线| 这里是久久伊人| 国产日韩欧美成人| 亚洲狼人综合| 国产精品一区=区| 亚洲欧美不卡| 久久乐国产精品| av成人激情| 羞羞漫画18久久大片| 国产午夜精品全部视频在线播放| 久久精品成人一区二区三区| 欧美日韩成人一区二区| 一区二区三区免费在线观看| 久久亚洲欧美| 99国产精品久久久久久久|