mvc簡介

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯彙集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不須要從新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。算法

模型(model)數據庫

Java Web裏說的是JavaBean,在JavaBean中除了其屬性和字段,還能夠有行爲及其事件,JavaBean能夠理解爲普通Java對象。Java普通對象,就是符合Java規範的全部對象,這和實體類徹底是兩回事。業務邏輯和數據訪問應該放在Model層,也就是V負責展現數據,Controler除了轉發不作業務邏輯。真正的邏輯事務,數據訪問,甚至算法都放到Model去。編程

視圖(view)設計模式

視圖是用戶看到並與之交互的界面。對老式的Web應用程序來講,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演着重要的角色,架構

控制器 (controller)
控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。因此當單擊Web頁面中的超連接和發送HTML表單時,控制器自己不輸出任何東西和作任何處理。它只是接收請求並決定調用哪一個模型構件去處理請求,而後用肯定用哪一個視圖來顯示模型處理返回的數據。 工具

MVC的優勢性能

  大部分用過程語言好比ASP、PHP開發出來的Web應用,初始的開發模板就是混合層的數據編程。例如,直接向數據庫發送請求並用HTML顯示,開發速度每每比較快,但因爲數據頁面的分離不是很直接,於是很難體現出業務模型的樣子或者模型的重用性。產品設計彈性力度很小,很難知足用戶的變化性需求。MVC要求對應用分層,雖然要花費額外的工做,但產品的結構清晰,產品的應用經過模型能夠獲得更好地體現。 設計

  首先,最重要的是應該有多個視圖對應一個模型的能力。在目前用戶需求的快速變化下,可能有多種方式訪問應用的要求。例如,訂單模型可能有本系統的訂單,也有網上訂單,或者其餘系統的訂單,但對於訂單的處理都是同樣,也就是說訂單的處理是一致的。按MVC設計模式,一個訂單模型以及多個視圖便可解決問題。這樣減小了代碼的複製,即減小了代碼的維護量,一旦模型發生改變,也易於維護。 其次,因爲模型返回的數據不帶任何顯示格式,於是這些模型也可直接應用於接口的使用。 對象

  再次,因爲一個應用被分離爲三層,所以有時改變其中的一層就能知足應用的改變。一個應用的業務流程或者業務規則的改變只需改動MVC的模型層。 接口

  控制層的概念也頗有效,因爲它把不一樣的模型和不一樣的視圖組合在一塊兒完成不一樣的請求,所以,控制層能夠說是包含了用戶請求權限的概念。

   最後,它還有利於軟件工程化管理。因爲不一樣的層各司其職,每一層不一樣的應用具備某些相同的特徵,有利於經過工程化、工具化產生管理程序代碼。

   

MVC的不足

  MVC的不足體如今如下幾個方面:

  (1)增長了系統結構和實現的複雜性。對於簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增長結構的複雜性,並可能產生過多的更新操做,下降運行效率。

  (2)視圖與控制器間的過於緊密的鏈接。視圖與控制器是相互分離,但確實聯繫緊密的部件,視圖沒有控制器的存在,其應用是頗有限的,反之亦然,這樣就妨礙了他們的獨立重用。

  (3)視圖對模型數據的低效率訪問。依據模型操做接口的不一樣,視圖可能須要屢次調用才能得到足夠的顯示數據。對未變化數據的沒必要要的頻繁訪問,也將損害操做性能。

  (4) 目前,通常高級的界面工具或構造器不支持MVC架構。改造這些工具以適應MVC須要和創建分離的部件的代價是很高的,從而形成使用MVC的困難。

相關文章
相關標籤/搜索