優勢:
1.各司其職,互不幹涉。
在MVC模式下,三層執行各自的功能,所以如果任何壹層的需求發生變化,只需要改變相應層的代碼,而不會影響其他層的代碼。
2.有利於發展中的分工。
在MVC模式下,因為系統是分層的,所以可以更好的實現開發中的分工。Web設計人員可以在視圖層開發JSP,熟悉業務的開發人員可以開發業務層,其他開發人員可以開發控制層。
3.有利於組件的重用
分層更有利於組件的重用。如果控制層可以是壹個獨立的組件,視圖層也可以做成壹個通用的操作界面。
4.MVC設計模式可以說是實現了分層開發。每壹層都有自己的功能。
5.減少了層與層之間的依賴,有利於代碼的標準化開發。
6.在用新代碼業務邏輯替換時,我們只需要替換相應的層,大大減少了我們的工作量,分工明確。
缺點:
1.增加了系統結構和實現的復雜性。對於壹個簡單的接口,嚴格遵循MVC,將模型、視圖和控制器分離,會增加結構的復雜度,並可能產生過多的更新操作,降低運行效率。
2.視圖和控制器之間的連接太緊。視圖和控制器是相互分離的,但又是密切相關的。沒有控制器的存在,視圖的應用非常有限,反之亦然,阻礙了它們的獨立重用。
3.視圖對模型數據的低效訪問。根據模型的操作界面,可能需要多次調用視圖才能獲得足夠的顯示數據。不必要的頻繁訪問未更改的數據也會損害操作性能。
4.目前壹般的高級接口工具或構造器都不支持MVC模式。改造這些工具來滿足MVC的需求,建立單獨的組件,成本非常高,這使得MVC很難使用。
5.麻煩,有些代碼太重復,實際開發用不上,要學習框架。下面的鳥瞰圖分析了框架在MVC中替換了哪些層。
MVC主要是java開發中的壹種設計模式:
m:model(模型,主要是服務業務邏輯層和Dao連接數據庫和發送數據的層)。
V: view(視圖,即用戶的界面,通常稱為前臺頁面、jsp等。)
c:控制器(控制層可以看作是壹個中繼,他接收前臺用戶的請求並調用服務,dao將數據發送到後臺,後臺經過數據庫操作和業務邏輯分析後將數據返回給控制器,最後返回到前臺jsp頁面)。