《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 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層,要求封裝系統的狀態,使用一組數據來表示系統的一個狀態。同樣在模塊中,需要將模塊內核的數據封裝起來作為模塊的一個狀態??刂茖拥拿恳淮尾僮鞫荚谧x取原狀態,進行數據處理,最后再寫入新狀態,整個過程就是將原狀態改變到另一個狀態。這樣減輕了模塊內部的復雜度,方便模塊內部的分工。甚至可以說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;郵箱:[email protected]。
主站蜘蛛池模板: 天天夜天干天天爽 | 精品免费久久久久久成人影院 | 欧美日韩在线观看精品 | 精品国语_高清国语自产 | 99久久精品免费看国产高清 | 在线观看一级毛片免费 | 欧美巨大精品videos | 亚洲精品一区专区 | 欧美激情视频一级视频一级毛片 | 中文一区在线观看 | 亚洲成人国产 | 国产精品18久久久久久小说 | 久久国产乱子伦精品免费不卡 | 成人午夜在线观看国产 | 国产精品高清在线观看地址 | 国产a网站 | 99re久久精品国产首页2020 | 国产高清厕所盗摄视频 | 一本大道香蕉大vr在线吗视频 | 免费观看日本特色做爰视频在线 | 我想看三级特黄 | 国产色在线观看 | 国产日韩亚洲欧美 | 久久精品一区二区三区不卡牛牛 | 一级美女黄色片 | 国产一区亚洲欧美成人 | 午夜mm131美女做爰视频 | 亚洲国产欧美视频 | 中国做爰国产精品视频 | 久cao在线观看视频 久爱免费观看在线网站 | 97免费视频在线观看 | 暖暖视频日韩欧美在线观看 | 久久88香港三级 | 成人性色生活片全黄 | 中国一级做a爰片久久毛片 中日韩欧美一级毛片 | 国语精品视频在线观看不卡 | 韩国女主播青草在线观看 | 日韩一区在线播放 | 国产精品三级在线观看 | 国产在线精品福利91香蕉 | 免费国产一区二区在免费观看 |