MVC在Web系統(tǒng)中的模式及其應用_第1頁
MVC在Web系統(tǒng)中的模式及其應用_第2頁
MVC在Web系統(tǒng)中的模式及其應用_第3頁
MVC在Web系統(tǒng)中的模式及其應用_第4頁
MVC在Web系統(tǒng)中的模式及其應用_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、MVC在WWeb系統(tǒng)中的模模式與應用用面向?qū)ο蟮牡脑O計模式式是經(jīng)驗的的總結(jié),MVC思想是原原先用于構(gòu)構(gòu)建用戶界界面的。這這篇文章主主要論述了了如何在新新的Web應用領域域中使用設設計模式和和MVC架構(gòu)。文文章首先介介紹了設計計模式的概概念和特點點,以及MVC架構(gòu)的設設計思想,并并分析了MVC架構(gòu)中包包含的幾種種主要的模模式。然后后根據(jù)Web應用系統(tǒng)統(tǒng)的特點,就就如何應用用模式和MVC架構(gòu)提出出了一些設設計思路。 1. 引言1.11 設計模式面向?qū)ο蠹夹g的的出現(xiàn)和應應用大大提提高了軟件件的重用性性和軟件的的質(zhì)量。面面向?qū)ο蟮牡木幊桃脖缺纫酝母鞲鞣N編程模模式要簡單單和高效,但但是面向?qū)ο蟮脑O

2、計計方法要比比以往的設設計方法要要復雜和有有技巧得多多,一個良良好的設計計應該既具具有對問題題的針對性性,也充分分考慮到對對將來問題題和需求有有足夠的通通用性。在在過去的十十幾年中,人人們在對面面向?qū)ο蠹技夹g的研究究探索和實實際應用中中針對某些些問題創(chuàng)造造了一些良良好的解決決方案,即所謂的的面向?qū)ο笙蟮脑O計模模式。面向向?qū)ο蠹夹g術的目的之之一就是提提高軟件的的重用性,而而對設計模模式、設計計方案的重重用則從更更深的層次次上體現(xiàn)了了重用的意意義和本質(zhì)質(zhì)。人們對對設計模式有很多定定義,其中中被引用的的最多是Chriistoppher Alexxandeer的設計模模式的定義義:每一個個設計模式式是

3、一個三三方的規(guī)則則,它表達達了一個上上下文環(huán)境境(Conttext),一個問題題和一個解解決方案。設計模式式一般有如如下幾個基基本要素:模式名稱稱,問題,目目的,解決決方案,效效果,樣例例代碼和相相關設計模模式。設計計模式的分分類有好幾幾種,可以以根據(jù)其目目的分為創(chuàng)創(chuàng)建型(Creeatioonal),結(jié)構(gòu)型(Strructuural)和行為型(Behhaviooral)三種。創(chuàng)創(chuàng)建型模式式主要是用用來創(chuàng)建對對象,結(jié)構(gòu)構(gòu)型模式主主要是處理理類或?qū)ο笙蟮慕M合,行行為型模式式則主要用來描述對對類或?qū)ο笙笤鯓咏换セズ驮鯓臃址峙渎氊煛R部梢愿鶕?jù)范圍將將設計模式式分為類模模式和對象象模式,類類模式處理理

4、類和子類類之間的關關系,這些些關系通過過繼承建立立,在編譯譯時刻就被被確定下來來,是屬于于靜態(tài)的。對象模式式是處理對對象間的關關系,這些些關系在運運行時刻變變化,更具具動態(tài)性。 模式的特特點:是通通過經(jīng)驗獲獲取的,以以某種結(jié)構(gòu)構(gòu)化的格式式書寫下來來,避免了了遇到相同同的問題重重頭設計,存存在于不同同的抽象層層,在不斷斷完善的,是是可重用的的人工產(chǎn)物物,使設計計和最好的的練習交互互,以被組組合起來解解決更大的的問題。 1.2 MMVC架構(gòu)MVC最初是在Smallltallk-800中被用來來構(gòu)建用戶界面的的。M代表模型Modeel, V代表視圖 Vieew, C代表 控制器Conttrollle

5、r。MVC的目的是是增加代碼碼的重用率率,減少數(shù)數(shù)據(jù)表達,數(shù)數(shù)據(jù)描述和和應用操作作的耦合度度。 同時也使使得軟件可可維護性,可可修復性,可可擴展性,靈靈活性以及及封裝性大大大提高。單用戶的的應用通常常是以事件件驅(qū)動的用用戶界面為為組織結(jié)構(gòu)構(gòu)的。開發(fā)發(fā)人員用一一個界面工工具畫了一一個用戶接接口界面,然然后編寫代代碼根據(jù)用用戶輸入去去執(zhí)行相應應的動作,許許多交互式式的開發(fā)環(huán)環(huán)境鼓勵這這么做,因因為它強調(diào)調(diào)先有界面面然后再有有功能。一一些軟件設設計模式策策略是這樣樣的,然后后經(jīng)常將固固定后的代代碼融入最最后的系統(tǒng)當中。導致的結(jié)結(jié)果就是,程程序組織圍圍繞用戶界界面元素和和用戶在那那些界面元元素上的動動

6、作,數(shù)據(jù)據(jù)的存儲,應應用的功能能以及用來來顯示的代代碼都雜亂亂無章的纏纏繞在一起起。在單用用戶的系統(tǒng)統(tǒng)里代碼結(jié)結(jié)構(gòu)是可以以這樣的,因因為系統(tǒng)需需求不會頻頻繁變化。但是對一一個大的系系統(tǒng)如大型型Web系統(tǒng),或或電子商務務系統(tǒng)來說說就不太適適用了。通通過把數(shù)據(jù)據(jù)模式從各各種可以被被存取和控控制的數(shù)據(jù)據(jù)中分離出出來可以改改善分布式式系統(tǒng)的設設計。MVC設計模式式由三部分分組成。模模型是應用用對象,沒沒有用戶界界面。視圖圖表示它在在屏幕上的的顯示,代代表流向用用戶的數(shù)據(jù)據(jù)??刂破髌鞫x用戶戶界面對用用戶輸入的的響應方式式,負責把把用戶的動作轉(zhuǎn)成針針對Modeel的操作。Modell 通過更新View的

7、數(shù)據(jù)來來反映數(shù)據(jù)據(jù)的變化。三者關系系如圖: 對MVC關系圖的的理解圖2 MVC的分工與協(xié)協(xié)作2. MVC中的設計計模式一個個以MVC為架構(gòu)的的系統(tǒng)包含含了很多的的設計模式式,但是與與MVC最為密切切相關的是是下面三種種模式:Obseerverr, Comppositte和Straategyy。2.1 Obseerverr模式MVC通過使用用定購/通知的方方式分離了了Modeel和View。View要保證自自己顯示能能正確地反反映出Modeel的內(nèi)容和和狀態(tài)。一一旦Modeel的內(nèi)容發(fā)發(fā)生變化,必必須有一個個機制來使使得Modeel能夠通知知相關的View,使得相相關的View可以在適適當?shù)臅r機

8、機刷新數(shù)據(jù)據(jù)。這個設設計還可以以解決更一般的問問題,將對對象分離,使使得一個對對象的改變變能夠影響響到另一些些對象,而而這個對象象并不知道道那些被影影響的對象象的細節(jié)。這就是被被描述為Obseerverr的設計模模式。 模式類型型:Obseerverr模式是對對象型模式式,同時它它也是行為為型模式。模式目的的:定義對對象間的一一對多的依依賴關系,當當一個對象象的值或狀狀態(tài)發(fā)生改改變時,所所有與它有有依賴關系系的對象都都得到通知知并自動更更新。某一一數(shù)據(jù)可能能有多種顯顯示方式,并并且可能同同時以不同同的方式顯顯示(如圖圖2)。當通通過某一種種方式改變變了數(shù)據(jù),那那么其他的的顯示都應應該能立即即知

9、道數(shù)據(jù)據(jù)的改變和和做相應的的調(diào)整。模模式結(jié)構(gòu):圖 3. Obseerverr模式的結(jié)結(jié)構(gòu)圖效果果:1. 抽象耦合合。目標對對象只知道道它有一些些觀察者,每每個觀察者者都符合抽抽象的Obseerverr類的簡單單接口,并并不知道它它們具體屬屬于哪個類類。這樣使使得目標和和觀察者之之間的耦合合最小且抽抽象。2. 支持廣廣播通信。目標發(fā)送送通知不用用指定觀察察者,如何何處理通知知由觀察者者決定。33. 可能的意外更新。要處理好好更新邏輯輯,避免錯錯誤更新。2.2 CCompoositee模式MVC的一個重重要特征就就是View可以嵌套套。嵌套的的組合視圖圖可用于任任何視圖可可用的地方方,而且可可以管

10、理嵌嵌套視圖。這種思想想反映出將將組合的視視圖與其組組件平等對對待的設計計。這種設設計思想在在面向?qū)ο笙箢I域內(nèi)被被描述成為為Comppositte的設計模模式。模式式類型:Comppositte模式是對對象型模式式,同時它它也是結(jié)構(gòu)構(gòu)型模式。模式目的的:將對象象組合成樹樹形結(jié)構(gòu)以以表示部分-整體層次結(jié)構(gòu)構(gòu)。Comppositte使組合對對象的使用用和單個對對象的使用用具有一致致性。模式式結(jié)構(gòu):圖4. Comppositte模式的結(jié)結(jié)構(gòu)圖效果果:1. 定義了包包含簡單對對象和組合合對象的類類層次結(jié)構(gòu)構(gòu)。簡單對對象可以被被組合到復復雜對象中中,而組合合的對象可可以再被組組合。這樣樣客戶端代代碼中用

11、到到簡單對象象的地方都都可以使用用組合對象象。2. 簡化客戶戶端代碼??蛻舳瞬徊挥弥滥衬硨ο笫呛喓唵螌ο筮€還是組合對對象,可以以以一致的的方式使用用這些對象象。3. 更容易增增加新類型型的組件。新的組件件可以方便便地加入已已有組合對對象中不用用改變客戶戶端代碼。2.3 SStrattegy模式MVC的另一重重要特征是是可以在不不改變View的情況下下改變View對用戶輸輸入的響應應方式。這這對一個經(jīng)經(jīng)常需要變變更響應邏邏輯的系統(tǒng)統(tǒng)來說是非非常重要的的。MVC把響應邏邏輯封裝在在Conttrolller中。有一一個Conttrolller的類層次次結(jié)構(gòu),可可以方便地地對原有Conttrolll

12、er做適當改改變,創(chuàng)建建新的Conttrolller。View使用Conttrolller子類的實實例來實現(xiàn)現(xiàn)一個特定定的響應策策略。要實實現(xiàn)不同的的響應策略略,只要用用不同種類類的Conttrolller實例例替換即可可。還可以以在運行時時刻通過改改變View的Conttrolller來改變View對用戶輸輸入的響應應策略。這這種Vieww-Conntrolller的關系是是被描述為為Straategyy的設計模模式的一個個例子。模模式類型:Straategyy模式是對對象型模式式,同時它它也是行為為型模式。模式目的的:定義一一系列的算算法,并且且把它們封封裝起來,使使它們可以以互相替換換,

13、使得算算法可以獨獨立于使用用它的客戶戶端而變化化。 模式結(jié)構(gòu)構(gòu):圖5. SStrattegy模式的結(jié)結(jié)構(gòu)圖效果:1. Strrateggy類層次為Conttext定義了可可重用的相相關算法或或行為。22. 替代代繼承的方方法。如果果直接繼承承Conttext,給以不不同的行為為,會將行行為加到Conttext中,從而而將算法的的實現(xiàn)與Conttext混合起來來,使Conttext難以理解解,維護和和擴展,而而且不能動動態(tài)地改變變算法。將將算法封裝裝在獨立的的Straategyy類,可以以使得算法法獨立于Conttext改變,容易易切換擴展展。3. 可以提供供相同行為為的不同實實現(xiàn)。4. 客戶端

14、必必須了解Straategyy之間有何何不同。55. Coontexxt和Straategyy之間的通信信開銷。66. 增加加了對象的的數(shù)目。3. MVVC在 Web系統(tǒng)中的的應用現(xiàn)在在的一些基基于Web的分布式式系統(tǒng)如B2B電子商務務系統(tǒng),就就適合采用用MVC架構(gòu)。通過過分析,從從高層次的的角度可以以將一個應應用的對象象分為三類類。一類就就是負責顯顯示的對象象,一類對對象包含商商業(yè)規(guī)則和和數(shù)據(jù),還還有一類就就是接收請請求,控制制商業(yè)對象象去完成請請求。這些些應用的顯顯示是經(jīng)常常需要變換換的,如網(wǎng)網(wǎng)頁的風格格,色調(diào),還還有需要顯顯示的內(nèi)容容,內(nèi)容的的顯示方式式等。而商商業(yè)規(guī)則和和數(shù)據(jù)是相相對要

15、穩(wěn)定定的。因此此,表示顯顯示的對象象View經(jīng)常需要要變化的,表表示商業(yè)規(guī)規(guī)則和數(shù)據(jù)據(jù)的對象Modeel要相對穩(wěn)定定,而表示示控制的Conttrolller則最穩(wěn)定定。通常當當系統(tǒng)發(fā)布布后,View對象是由由美工,HTMLL/JSPP設計人員員或者系統(tǒng)統(tǒng)管理員來來負責管理理的。Conttrolller對象由應應用開發(fā)人人員開發(fā)實實施,商業(yè)業(yè)規(guī)則對象象和商業(yè)數(shù)數(shù)據(jù)對象則則由開發(fā)人人員,領域域?qū)<液蛿?shù)數(shù)據(jù)庫管理理員共同完完成的。顯顯示邏輯在在Web層或客戶戶端控制,可可以是Servvlet 或JSP,動態(tài)地地生成Html。一般來來說采用JSP要比采用Servvlet要好。JSP更好地將將代碼與Ht

16、ml部分分開開,有利于于頁面設計計人員和代代碼開發(fā)人人員的分離離,提高效效率。同時時JSP可以完成成所有Servvlet完成的功功能,實際際上JSP最終也轉(zhuǎn)轉(zhuǎn)換成一個個Servvlet。與控制制有關的對對象存在于于系統(tǒng)的每每一個層次次,協(xié)調(diào)跨跨層動作。包含商業(yè)業(yè)規(guī)則和數(shù)數(shù)據(jù)的對象象存在于EJB層(以EJB為中心的的模式)或或Web層(以Web為中心的的模式)。3.1 VView在Web系統(tǒng)中的的應用Viiew代表系統(tǒng)統(tǒng)的顯示,它它完全存在在于Web層。一般般由JSP, Javva Beean和Custtom Tag組成。JSP可以動態(tài)態(tài)生成網(wǎng)頁頁內(nèi)容,Custoom Taag 更方便了了使用J

17、avaa Bean,而且它它可以封裝裝顯示邏輯輯,更有利利于于模塊塊化和重用用。一些設設計良好的的Custoom Taag可以在多多個JSP甚至可以以在不同的的系統(tǒng)里重重復使用。Javaa Bean用來控制JSP和Modeel對象。JSP通過Javaa Beaan 來讀取Modeel對象中的的數(shù)據(jù),Modeel和Conttrolller對象則負負責對Javaa Bean的數(shù)據(jù)更更新。一般般來說,可可以先要設設計出所有有可能出現(xiàn)現(xiàn)的屏幕,即即用戶使用用系統(tǒng)時可可以看到的的所有內(nèi)容容。然后根根據(jù)這些內(nèi)內(nèi)容,找出出公共部分分,靜態(tài)部部分和動態(tài)態(tài)變化部分分??梢钥伎紤]使用模模板方法,把把公用的內(nèi)內(nèi)容單

18、獨生生成JSP,需要變變化的也各各自生成Html或JSP, 由一個模模板JSP, 把這些不不同部分動動態(tài)地引入入(incllude方法)。還有一個個要考慮的的問題就是是屏幕的選選擇問題,當當處理完用用戶請求,模模板被自動動調(diào)用來顯顯示,這個個顯示一定定要知道用用戶關心的的屏幕是有有哪些部分分組成。所所以可以考考慮把所有有屏幕的定定義放在一一個集中的的文件里,如如一個java文件或文文本文件。由于考慮慮到屏幕定定義文件將將來的變更更可能性,最最好使用文文本文件如如一個XML文件,這這樣將來更更改不用重重新編譯??梢愿鶕?jù)據(jù)用戶輸入入的URL和參數(shù)可可以映射到到某一個結(jié)結(jié)果屏幕,當當然有可能能還要根

19、據(jù)據(jù)動作的執(zhí)執(zhí)行結(jié)果選選擇不同的的結(jié)果屏幕幕內(nèi)容。所所以需要一一個請求與與資源的匹匹配文件(XML),如果果一個URL請求有幾種種不同結(jié)果果,則要在在該文件中中指明是否否需要流控控制(一種種conttrolller對象)以以及不同流流向的對應應屏幕。33.2 MModell在Web系統(tǒng)中的的應用Moodel對象代表表了商業(yè)規(guī)規(guī)則和商業(yè)業(yè)數(shù)據(jù),存存在于EJB層和Web層。在J2EE的規(guī)范中中,系統(tǒng)有有些數(shù)據(jù)需需要存儲于于數(shù)據(jù)庫中中,如用戶戶的賬號信信息(accoount modeel),公司司的數(shù)據(jù)(commpanyy moddel)等,也有有一些不需需要記錄在在數(shù)據(jù)庫里里的,如某某用戶瀏覽覽的

20、當前產(chǎn)產(chǎn)品目錄(cattalogg modeel),他的購購物內(nèi)容(shooppinng caart modeel)等。這些model數(shù)據(jù)存在在于哪一層層要根據(jù)它它們的生命命周期和范范圍來決定定。在Web層有HttppSesssion和ServvletCConteext及Javaa Bean對象來存存儲數(shù)據(jù),在EJB層則有EJB來存儲數(shù)據(jù)和邏輯。Web層的Java Bean的model對象存儲了EJB層model對象的數(shù)據(jù)的拷貝。因為EJB層有很多不同的model對象,所以Web層可以通過一個ModelManager來控制EJB層的各model對象,在ModelManger中可以封裝使用后臺m

21、odel對象的方法。在EJB層把所有的數(shù)據(jù)和規(guī)則都模式化為EJB也是不恰當?shù)?。如可以把存取?shù)據(jù)庫的對象模式化為DAO對象。DAO中可以封裝與具體數(shù)據(jù)庫的交互細節(jié),如可以讀寫不同的表,多個數(shù)據(jù)庫,甚至多種數(shù)據(jù)庫。如定單的model對象可以是一個OrderDAO, 它可能要同時處理Order表,OrderStatus表和OrderItemLines表。還有可以考慮使用Value對象。一個Value 對象可以封裝遠程對象,因為每一個讀遠程對象的屬性都可能是一個遠程過程調(diào)用,都會耗費網(wǎng)絡資源??梢栽贓JB的遠程對象中使用Value對象. 在遠程對象中一次性得到Value對象來得到所有屬性的值。3.3 CContrrolleer在Web系統(tǒng)中的的應用Coontroollerr對象協(xié)調(diào)Modeel與View,把

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論