MVC思想及其優勢

注意:  對於非常小型的Web站點,如果後期的更新、維護工作不是特別大,可以使用Model 1的模式來開發應用,而不是使用Model 2的模式。雖然Model 2提供了更好的可擴展性及可維護性,但增加了前期開發成本。從某種程度上講,Model 2爲了降低系統後期維護的複雜度,卻導致前期開發的更高複雜度。

 

MVC並不是Java語言所特有的設計思想,也並不是Web應用所特有的思想,它是所有面向對象程序設計語言都應該遵守的規範。
MVC思想將一個應用分成三個基本部分:Model(模型)、View(視圖)和Controller(控制器),這三個部分以最少的耦合協同工作,從而提高應用的可擴展性及可維護性。

 

在經典的MVC模式中,事件由控制器處理,控制器根據事件的類型改變模型或視圖,反之亦然。具體地說,每個模型對應一系列的視圖列表,這種對應關係通常採用註冊來完成,即:把多個視圖註冊到同一個模型,當模型發生改變時,模型向所有註冊過的視圖發送通知,接下來,視圖從對應的模型中獲得信息,然後完成視圖顯示的更新。
從設計模式的角度來看,MVC思想非常類似於一個觀察者模式,但與觀察者模式存在少許差別:觀察者模式下觀察者和被觀察者可以是兩個互相對等的對象,但對於MVC思想而言,被觀察者往往只是單純的數據體,而觀察者則是單純的視圖頁面。


概括起來,MVC有如下特點:


多個視圖可以對應一個模型。按MVC設計模式,一個模型對應多個視圖,可以減少代碼的複製及代碼的維護量,一旦模型發生改變,也易於維護。
模型返回的數據與顯示邏輯分離。模型數據可以應用任何的顯示技術,例如,使用JSP頁面、Velocity模板或者直接產生Excel文檔等。
應用被分隔爲三層,降低了各層之間的耦合,提供了應用的可擴展性。
控制層的概念也很有效,由於它把不同的模型和不同的視圖組合在一起,完成不同的請求。因此,控制層可以說是包含了用戶請求權限的概念。
MVC更符合軟件工程化管理的精神。不同的層各司其職,每一層的組件具有相同的特徵,有利於通過工程化和工具化產生管理程序代碼。
相對於早期的MVC思想,Web模式下的MVC思想則又存在一些變化,因爲對於一個應用程序而言,我們可以將視圖註冊給模型,當模型數據發生改變時,即時通知視圖頁面發生改變;而對於Web應用而言,即使將多個JSP頁面註冊給一個模型,當模型發生變化時,模型無法主動發送消息給JSP頁面(因爲Web應用都是基於請求/響應模式的),只有當用戶請求瀏覽該頁面時,控制器才負責調用模型數據來更新JSP頁面。
注意  MVC思想與觀察者模式有一定的相似之處,但並不完全相同。經典的MVC思想與Web應用的MVC思想也存在一定的差別,引起差別的主要原因是因爲Web應用是一種請求/響應模式下應用,對於請求/響應應用,如果用戶不對應用發出請求,視圖無法主動更新自己。

發佈了111 篇原創文章 · 獲贊 5 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章