




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、MVC在WWeb系統中的模模式與應用用面向對象的的設計模式式是經驗的的總結,MVC思想是原原先用于構構建用戶界界面的。這這篇文章主主要論述了了如何在新新的Web應用領域域中使用設設計模式和和MVC架構。文文章首先介介紹了設計計模式的概概念和特點點,以及MVC架構的設設計思想,并并分析了MVC架構中包包含的幾種種主要的模模式。然后后根據Web應用系統統的特點,就就如何應用用模式和MVC架構提出出了一些設設計思路。 1. 引言1.11 設計模式面向對對象技術的的出現和應應用大大提提高了軟件件的重用性性和軟件的的質量。面面向對象的的編程也比比以往的各各種編程模模式要簡單單和高效,但但是面向對對象的設
2、計計方法要比比以往的設設計方法要要復雜和有有技巧得多多,一個良良好的設計計應該既具具有對問題題的針對性性,也充分分考慮到對對將來問題題和需求有有足夠的通通用性。在在過去的十十幾年中,人人們在對面面向對象技技術的研究究探索和實實際應用中中針對某些些問題創造造了一些良良好的解決決方案,即所謂的的面向對象象的設計模模式。面向向對象技術術的目的之之一就是提提高軟件的的重用性,而而對設計模模式、設計計方案的重重用則從更更深的層次次上體現了了重用的意意義和本質質。人們對對設計模式有很多定定義,其中中被引用的的最多是Chriistoppher Alexxandeer的設計模模式的定義義:每一個個設計模式式是
3、一個三三方的規則則,它表達達了一個上上下文環境境(Conttext),一個問題題和一個解解決方案。設計模式式一般有如如下幾個基基本要素:模式名稱稱,問題,目目的,解決決方案,效效果,樣例例代碼和相相關設計模模式。設計計模式的分分類有好幾幾種,可以以根據其目目的分為創創建型(Creeatioonal),結構型(Strructuural)和行為型(Behhaviooral)三種。創創建型模式式主要是用用來創建對對象,結構構型模式主主要是處理理類或對象象的組合,行行為型模式式則主要用來描述對對類或對象象怎樣交互互和怎樣分分配職責。也可以根根據范圍將將設計模式式分為類模模式和對象象模式,類類模式處理理
4、類和子類類之間的關關系,這些些關系通過過繼承建立立,在編譯譯時刻就被被確定下來來,是屬于于靜態的。對象模式式是處理對對象間的關關系,這些些關系在運運行時刻變變化,更具具動態性。 模式的特特點:是通通過經驗獲獲取的,以以某種結構構化的格式式書寫下來來,避免了了遇到相同同的問題重重頭設計,存存在于不同同的抽象層層,在不斷斷完善的,是是可重用的的人工產物物,使設計計和最好的的練習交互互,以被組組合起來解解決更大的的問題。 1.2 MMVC架構MVC最初是在Smallltallk-800中被用來來構建用戶界面的的。M代表模型Modeel, V代表視圖 Vieew, C代表 控制器Conttrollle
5、r。MVC的目的是是增加代碼碼的重用率率,減少數數據表達,數數據描述和和應用操作作的耦合度度。 同時也使使得軟件可可維護性,可可修復性,可可擴展性,靈靈活性以及及封裝性大大大提高。單用戶的的應用通常常是以事件件驅動的用用戶界面為為組織結構構的。開發發人員用一一個界面工工具畫了一一個用戶接接口界面,然然后編寫代代碼根據用用戶輸入去去執行相應應的動作,許許多交互式式的開發環環境鼓勵這這么做,因因為它強調調先有界面面然后再有有功能。一一些軟件設設計模式策策略是這樣樣的,然后后經常將固固定后的代代碼融入最最后的系統當中。導致的結結果就是,程程序組織圍圍繞用戶界界面元素和和用戶在那那些界面元元素上的動動
6、作,數據據的存儲,應應用的功能能以及用來來顯示的代代碼都雜亂亂無章的纏纏繞在一起起。在單用用戶的系統統里代碼結結構是可以以這樣的,因因為系統需需求不會頻頻繁變化。但是對一一個大的系系統如大型型Web系統,或或電子商務務系統來說說就不太適適用了。通通過把數據據模式從各各種可以被被存取和控控制的數據據中分離出出來可以改改善分布式式系統的設設計。MVC設計模式式由三部分分組成。模模型是應用用對象,沒沒有用戶界界面。視圖圖表示它在在屏幕上的的顯示,代代表流向用用戶的數據據。控制器器定義用戶戶界面對用用戶輸入的的響應方式式,負責把把用戶的動作轉成針針對Modeel的操作。Modell 通過更新View的
7、數據來來反映數據據的變化。三者關系系如圖: 對MVC關系圖的的理解圖2 MVC的分工與協協作2. MVC中的設計計模式一個個以MVC為架構的的系統包含含了很多的的設計模式式,但是與與MVC最為密切切相關的是是下面三種種模式:Obseerverr, Comppositte和Straategyy。2.1 Obseerverr模式MVC通過使用用定購/通知的方方式分離了了Modeel和View。View要保證自自己顯示能能正確地反反映出Modeel的內容和和狀態。一一旦Modeel的內容發發生變化,必必須有一個個機制來使使得Modeel能夠通知知相關的View,使得相相關的View可以在適適當的時機
8、機刷新數據據。這個設設計還可以以解決更一般的問問題,將對對象分離,使使得一個對對象的改變變能夠影響響到另一些些對象,而而這個對象象并不知道道那些被影影響的對象象的細節。這就是被被描述為Obseerverr的設計模模式。 模式類型型:Obseerverr模式是對對象型模式式,同時它它也是行為為型模式。模式目的的:定義對對象間的一一對多的依依賴關系,當當一個對象象的值或狀狀態發生改改變時,所所有與它有有依賴關系系的對象都都得到通知知并自動更更新。某一一數據可能能有多種顯顯示方式,并并且可能同同時以不同同的方式顯顯示(如圖圖2)。當通通過某一種種方式改變變了數據,那那么其他的的顯示都應應該能立即即知
9、道數據據的改變和和做相應的的調整。模模式結構:圖 3. Obseerverr模式的結結構圖效果果:1. 抽象耦合合。目標對對象只知道道它有一些些觀察者,每每個觀察者者都符合抽抽象的Obseerverr類的簡單單接口,并并不知道它它們具體屬屬于哪個類類。這樣使使得目標和和觀察者之之間的耦合合最小且抽抽象。2. 支持廣廣播通信。目標發送送通知不用用指定觀察察者,如何何處理通知知由觀察者者決定。33. 可能的意外更新。要處理好好更新邏輯輯,避免錯錯誤更新。2.2 CCompoositee模式MVC的一個重重要特征就就是View可以嵌套套。嵌套的的組合視圖圖可用于任任何視圖可可用的地方方,而且可可以管
10、理嵌嵌套視圖。這種思想想反映出將將組合的視視圖與其組組件平等對對待的設計計。這種設設計思想在在面向對象象領域內被被描述成為為Comppositte的設計模模式。模式式類型:Comppositte模式是對對象型模式式,同時它它也是結構構型模式。模式目的的:將對象象組合成樹樹形結構以以表示部分-整體層次結構構。Comppositte使組合對對象的使用用和單個對對象的使用用具有一致致性。模式式結構:圖4. Comppositte模式的結結構圖效果果:1. 定義了包包含簡單對對象和組合合對象的類類層次結構構。簡單對對象可以被被組合到復復雜對象中中,而組合合的對象可可以再被組組合。這樣樣客戶端代代碼中用
11、到到簡單對象象的地方都都可以使用用組合對象象。2. 簡化客戶戶端代碼。客戶端不不用知道某某對象是簡簡單對象還還是組合對對象,可以以以一致的的方式使用用這些對象象。3. 更容易增增加新類型型的組件。新的組件件可以方便便地加入已已有組合對對象中不用用改變客戶戶端代碼。2.3 SStrattegy模式MVC的另一重重要特征是是可以在不不改變View的情況下下改變View對用戶輸輸入的響應應方式。這這對一個經經常需要變變更響應邏邏輯的系統統來說是非非常重要的的。MVC把響應邏邏輯封裝在在Conttrolller中。有一一個Conttrolller的類層次次結構,可可以方便地地對原有Conttrolll
12、er做適當改改變,創建建新的Conttrolller。View使用Conttrolller子類的實實例來實現現一個特定定的響應策策略。要實實現不同的的響應策略略,只要用用不同種類類的Conttrolller實例例替換即可可。還可以以在運行時時刻通過改改變View的Conttrolller來改變View對用戶輸輸入的響應應策略。這這種Vieww-Conntrolller的關系是是被描述為為Straategyy的設計模模式的一個個例子。模模式類型:Straategyy模式是對對象型模式式,同時它它也是行為為型模式。模式目的的:定義一一系列的算算法,并且且把它們封封裝起來,使使它們可以以互相替換換,
13、使得算算法可以獨獨立于使用用它的客戶戶端而變化化。 模式結構構:圖5. SStrattegy模式的結結構圖效果:1. Strrateggy類層次為Conttext定義了可可重用的相相關算法或或行為。22. 替代代繼承的方方法。如果果直接繼承承Conttext,給以不不同的行為為,會將行行為加到Conttext中,從而而將算法的的實現與Conttext混合起來來,使Conttext難以理解解,維護和和擴展,而而且不能動動態地改變變算法。將將算法封裝裝在獨立的的Straategyy類,可以以使得算法法獨立于Conttext改變,容易易切換擴展展。3. 可以提供供相同行為為的不同實實現。4. 客戶端
14、必必須了解Straategyy之間有何何不同。55. Coontexxt和Straategyy之間的通信信開銷。66. 增加加了對象的的數目。3. MVVC在 Web系統中的的應用現在在的一些基基于Web的分布式式系統如B2B電子商務務系統,就就適合采用用MVC架構。通過過分析,從從高層次的的角度可以以將一個應應用的對象象分為三類類。一類就就是負責顯顯示的對象象,一類對對象包含商商業規則和和數據,還還有一類就就是接收請請求,控制制商業對象象去完成請請求。這些些應用的顯顯示是經常常需要變換換的,如網網頁的風格格,色調,還還有需要顯顯示的內容容,內容的的顯示方式式等。而商商業規則和和數據是相相對要
15、穩定定的。因此此,表示顯顯示的對象象View經常需要要變化的,表表示商業規規則和數據據的對象Modeel要相對穩定定,而表示示控制的Conttrolller則最穩定定。通常當當系統發布布后,View對象是由由美工,HTMLL/JSPP設計人員員或者系統統管理員來來負責管理理的。Conttrolller對象由應應用開發人人員開發實實施,商業業規則對象象和商業數數據對象則則由開發人人員,領域域專家和數數據庫管理理員共同完完成的。顯顯示邏輯在在Web層或客戶戶端控制,可可以是Servvlet 或JSP,動態地地生成Html。一般來來說采用JSP要比采用Servvlet要好。JSP更好地將將代碼與Ht
16、ml部分分開開,有利于于頁面設計計人員和代代碼開發人人員的分離離,提高效效率。同時時JSP可以完成成所有Servvlet完成的功功能,實際際上JSP最終也轉轉換成一個個Servvlet。與控制制有關的對對象存在于于系統的每每一個層次次,協調跨跨層動作。包含商業業規則和數數據的對象象存在于EJB層(以EJB為中心的的模式)或或Web層(以Web為中心的的模式)。3.1 VView在Web系統中的的應用Viiew代表系統統的顯示,它它完全存在在于Web層。一般般由JSP, Javva Beean和Custtom Tag組成。JSP可以動態態生成網頁頁內容,Custoom Taag 更方便了了使用J
17、avaa Bean,而且它它可以封裝裝顯示邏輯輯,更有利利于于模塊塊化和重用用。一些設設計良好的的Custoom Taag可以在多多個JSP甚至可以以在不同的的系統里重重復使用。Javaa Bean用來控制JSP和Modeel對象。JSP通過Javaa Beaan 來讀取Modeel對象中的的數據,Modeel和Conttrolller對象則負負責對Javaa Bean的數據更更新。一般般來說,可可以先要設設計出所有有可能出現現的屏幕,即即用戶使用用系統時可可以看到的的所有內容容。然后根根據這些內內容,找出出公共部分分,靜態部部分和動態態變化部分分。可以考考慮使用模模板方法,把把公用的內內容單
18、獨生生成JSP,需要變變化的也各各自生成Html或JSP, 由一個模模板JSP, 把這些不不同部分動動態地引入入(incllude方法)。還有一個個要考慮的的問題就是是屏幕的選選擇問題,當當處理完用用戶請求,模模板被自動動調用來顯顯示,這個個顯示一定定要知道用用戶關心的的屏幕是有有哪些部分分組成。所所以可以考考慮把所有有屏幕的定定義放在一一個集中的的文件里,如如一個java文件或文文本文件。由于考慮慮到屏幕定定義文件將將來的變更更可能性,最最好使用文文本文件如如一個XML文件,這這樣將來更更改不用重重新編譯。可以根據據用戶輸入入的URL和參數可可以映射到到某一個結結果屏幕,當當然有可能能還要根
19、據據動作的執執行結果選選擇不同的的結果屏幕幕內容。所所以需要一一個請求與與資源的匹匹配文件(XML),如果果一個URL請求有幾種種不同結果果,則要在在該文件中中指明是否否需要流控控制(一種種conttrolller對象)以以及不同流流向的對應應屏幕。33.2 MModell在Web系統中的的應用Moodel對象代表表了商業規規則和商業業數據,存存在于EJB層和Web層。在J2EE的規范中中,系統有有些數據需需要存儲于于數據庫中中,如用戶戶的賬號信信息(accoount modeel),公司司的數據(commpanyy moddel)等,也有有一些不需需要記錄在在數據庫里里的,如某某用戶瀏覽覽的
20、當前產產品目錄(cattalogg modeel),他的購購物內容(shooppinng caart modeel)等。這些model數據存在在于哪一層層要根據它它們的生命命周期和范范圍來決定定。在Web層有HttppSesssion和ServvletCConteext及Javaa Bean對象來存存儲數據,在EJB層則有EJB來存儲數據和邏輯。Web層的Java Bean的model對象存儲了EJB層model對象的數據的拷貝。因為EJB層有很多不同的model對象,所以Web層可以通過一個ModelManager來控制EJB層的各model對象,在ModelManger中可以封裝使用后臺m
21、odel對象的方法。在EJB層把所有的數據和規則都模式化為EJB也是不恰當的。如可以把存取數據庫的對象模式化為DAO對象。DAO中可以封裝與具體數據庫的交互細節,如可以讀寫不同的表,多個數據庫,甚至多種數據庫。如定單的model對象可以是一個OrderDAO, 它可能要同時處理Order表,OrderStatus表和OrderItemLines表。還有可以考慮使用Value對象。一個Value 對象可以封裝遠程對象,因為每一個讀遠程對象的屬性都可能是一個遠程過程調用,都會耗費網絡資源。可以在EJB的遠程對象中使用Value對象. 在遠程對象中一次性得到Value對象來得到所有屬性的值。3.3 CContrrolleer在Web系統中的的應用Coontroollerr對象協調Modeel與View,把
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年市場容量與公司戰略調整試題及答案
- 策劃班級勵志講座的主題計劃
- 保證重要活動安全的方案計劃
- 網絡管理員實踐技能試題及答案總結
- 財務業績分析計劃
- 2024年云南省民政廳下屬事業單位真題
- 學校社團工作計劃推廣綠色出行
- 市場開拓與客戶維護計劃
- 2025屆河南省洛陽市李村一中學七年級數學第二學期期末學業質量監測模擬試題含解析
- 社交行業的品牌工作計劃
- 海門村干部考試試題及答案
- (二模)2025年5月濟南市高三高考針對性訓練生物試卷(含答案)
- 溝通的藝術智慧樹知到期末考試答案章節答案2024年湖南師范大學
- 中國主要地理界線 課件(28張PPT)
- 一般行業主要負責人和安全管理人員考試復習題庫
- 計算機組裝與維護立體化教程ppt課件(完整版)
- 安全安全資金使用計劃
- 痛風性關節炎 課件
- 項目部管理人員名單
- 《新編英語語法教程》主要章節語法術語
- 電腦企業之 組裝作業指導書(DK607 Nupro760)
評論
0/150
提交評論