【J2EE】:MVC模式的簡介與分析
MVC全名是Model View Controller,是模型(model)-檢視(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種業務邏輯、資料、介面顯示分離的方法組織程式碼,將業務邏輯聚集到一個部件裡面,在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用於對映傳統的輸入、處理和輸出功能在一個邏輯的圖形化使用者介面的結構中。
MVC並不是Java語言所特有的設計思想,也不是Web應用所特有的思想,它是所有物件導向程式設計語言都應該遵循的規範。
檢視層負責顯示模型層的內容。它從模型層取得資料並指定這些資料如何被顯示出來。在模型層變化的時候,它將自動更新。另外檢視層也會將使用者的輸入傳送給控制器。
控制層負責定義應用程式的行為。它可以分派使用者的請求並選擇恰當的檢視以用於顯示,同時它也可以解釋使用者的輸入並將它們對映為模型層可執行的操作;在一個圖形介面中,常見的使用者輸入包括點選按鈕和選單選擇。在Web應用中,它包括對Web層的HTTP GET和POST的請求;控制層可以基於使用者的互動和模型層的操作結果來選擇下一個可以顯示的檢視,一個應用程式通常會基於一組相關功能設定一個控制層的模組,甚至一些應用程式會根據不同的使用者型別具有不同的控制層設定,這主要是由於不同使用者的檢視互動和選擇也是不同的。
在模型層、檢視層和控制層之間劃分責任可以減少程式碼的重複度,並使應用程式維護起來更簡單。同時由於資料和商務邏輯的分開,在新的資料來源加入和資料顯示變化的時候,資料處理也會變得更簡單。
概括起來,MVC具有如下優勢:
1 多個檢視可以對應一個模型。按MVC設計模式,一個模型對應多個檢視,可以減少程式碼的複製和程式碼的維護量,一旦模型發生改變,也易於維護。
2 模型返回的資料與顯示邏輯分離。模型資料可以應用任何的顯示技術,例如:使用JSP頁面、Velocity模板或者直接產生Excel文件等。
3 應用被分隔為三層,降低了各層之間的耦合,提供了應用的可擴充套件性。
4 控制層的概念也很有效,由於它把不同的模型和不同的檢視組合在一起,完成不同的請求。因此,控制層可以說是包含了使用者請求許可權的概念。
5 MVC更符合軟體工程化管理的思想。不同的層各司其職,每一層的元件具有相同的特徵,有利於通過工程化和工具化產生管理程式程式碼。
但是,任何事物都有兩面性,MVC也不例外,那麼它有什麼不好的地方呢?
1 增加了系統結構和實現的複雜性。對於簡單的介面,嚴格遵循MVC,使模型、檢視和控制器分離,會增加結構的複雜性,並可能產生過多的更新操作,降低執行效率。
2 檢視與控制器間的過於緊密的連線。檢視與控制器是相互分離,但確實聯絡緊密的部件,檢視沒有控制器的存在,其應用是非常有限的,反之亦然,這樣就妨礙了他們的獨立重用。
3 檢視對模型資料的低效率訪問。依據模型操作介面的不同,檢視可能需要多次呼叫才能獲得足夠的顯示資料。對未變化資料的不必要的頻繁訪問,也將損害操作效能。
小結一下:
從設計模式的角度來看,MVC思想非常類似於觀察者模式,但是與觀察者模式存在少許差別:觀察者模式下觀察者和被觀察者可以是兩個互相對等的物件,但對於MVC思想而言,被觀察者往往只是單純的資料體,而觀察者則是單純的檢視頁面。
經典的MVC思想與Web應用的MVC思想也存在一定的差別,主要原因是因為Web應用是一種請求/響應模式下應用,對於請求/響應應用,如果使用者不對應用發出請求,檢視自身是無法主動更新自己的。相關文章
- MVC開發簡介MVC
- 極簡架構模式-MVC模式架構模式MVC
- J2EE設計模式分析與實踐——引言 (轉)設計模式
- Spring MVC 通俗簡介SpringMVC
- 請介紹關於mvc模式的書?MVC模式
- J2EE設計模式分析與實踐——J2EE技術新論 (轉)設計模式
- MVVM與MVC模式的比較MVVMMVC模式
- ASP.NET MVC – 安全簡介ASP.NETMVC
- ASP.NET MVC – 模型簡介ASP.NETMVC模型
- Dart VM 的相關簡介與執行模式解析Dart模式
- ASP.NET MVC – 檢視簡介ASP.NETMVC
- 模式系統與最簡單的Node.js MVC Web Server設計模式Node.jsMVCWebServer
- J2SE的基本簡介與J2EE/J2ME的差異
- J2EE技術簡單介紹 (轉)
- 【新炬網路名師大講堂】j2ee與weblogic簡介Web
- Jsp+JavaBean模式,Jsp+Servlet模式,MVC模式介紹JSJavaBean模式ServletMVC
- 淺談前端MVC與MVVC模式前端MVC模式
- 【J2EE】:MVC是框架?是設計模式?是架構?還是……MVC框架設計模式架構
- 防火牆模式工作模式簡介防火牆模式
- Spring 框架基礎(06):Mvc架構模式簡介,執行流程詳解Spring框架MVC架構模式
- ASP.NET MVC – 控制器簡介ASP.NETMVC
- 第一章 Web MVC簡介WebMVC
- oracle lag與lead分析函式簡介Oracle函式
- 橋樑模式簡介模式
- java設計模式一一設計模式的簡介和介紹Java設計模式
- JavaScript 的 MVC 模式JavaScriptMVC模式
- Android框架模式之MVC與MVPAndroid框架模式MVCMVP
- ASP.NET MVC – SQL 資料庫簡介ASP.NETMVCSQL資料庫
- ASP.NET MVC4 入門簡介ASP.NETMVC
- ECMAScript嚴格模式簡介模式
- 效能分析工具簡介
- 第63節:Java中的Spring MVC簡介筆記JavaSpringMVC筆記
- 跟開濤學Spring MVC:第一章 Web MVC簡介SpringMVCWeb
- ASP.NET MVC – 樣式和佈局簡介ASP.NETMVC
- 《Python機器學習與視覺化分析實戰》簡介Python機器學習視覺化
- MVC模式和MVP模式的區別MVC模式MVP
- MVC模式原理MVC模式
- scrapy的簡介與安裝