[轉]MVC設計模式

MVC模式(Model-View-Controller)是軟件工程中的一種軟件架構模式,把軟件系統分爲三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。php

MVC模式最先由Trygve Reenskaug在1978年提出[1] ,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代爲程序語言Smalltalk發明的一種軟件設計模式。MVC模式的目的是實現一種動態的程序設計,使後續對程序的修改和擴展簡化,而且使程序某一部分的重複利用成爲可能。除此以外,此模式經過對複雜度的簡化,使程序結構更加直觀。軟件系統經過對自身基本部分分離的同時也賦予了各個基本部分應有的功能。專業人員能夠經過自身的專長分組:程序員

  • (控制器Controller)- 負責轉發請求,對請求進行處理。
  • (視圖View) - 界面設計人員進行圖形界面設計。
  • (模型Model) - 程序員編寫程序應有的功能(實現算法等等)、數據庫專家進行數據管理和數據庫設計(能夠實現具體的功能)。

ModelViewControllerDiagramZh.png

。在視圖中其實沒有真正的處理髮生,無論這些數據是聯機存儲的仍是一個僱員列表,做爲視圖來說,它只是做爲一種輸出數據並容許用戶操縱的方式。
模型
   模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用象EJBs和ColdFusionComponents這樣的構件對象來處理數據庫。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能爲多個視圖提供數據。因爲應用於模型的代碼只需寫一次就能夠被多個視圖重用,因此減小了代碼的重複性。
控制器
  控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。因此當單擊Web頁面中的超連接和發送HTML表單時,控制器自己不輸出任何東西和作任何處理。它只是接收請求並決定調用哪一個模型構件去處理請求,而後再肯定用哪一個視圖來顯示返回的數據。算法

 

優勢:數據庫

 

在最初的JSP網頁中,像數據庫查詢語句這樣的數據層代碼和像HTML這樣的表示層代碼混在一塊兒。經驗比較豐富的開發者會將數據從表示層分離開來,但這一般不是很容易作到的,它須要精心地計劃和不斷的嘗試。MVC從根本上強制性地將它們分開。儘管構造MVC應用程序須要一些額外的工做,可是它帶給咱們的好處是毋庸置疑的。設計模式

首先,多個視圖能共享一個模型。現在,同一個Web應用程序會提供多種用戶界面,例如用戶但願既可以經過瀏覽器來收發電子郵件,還但願經過手機來訪問電子郵箱,這就要求Web網站同時能提供Internet界面和WAP界面。在MVC設計模式中,模型響應用戶請求並返回響應數據,視圖負責格式化數據並把它們呈現給用戶,業務邏輯和表示層分離,同一個模型能夠被不一樣的視圖重用,因此大大提升了代碼的可重用性。瀏覽器

其次,控制器是自包含(self-contained)指高獨立內聚的對象,與模型和視圖保持相對獨立,因此能夠方便的改變應用程序的數據層和業務規則。例如,把數據庫從MySQL移植到Oracle,或者把RDBMS數據源改變成LDAP數據源,只需改變控制器便可。一旦正確地實現了控制器,無論數據來自數據庫仍是LDAP服務器,視圖都會正確地顯示它們。因爲MVC模式的三個模塊相互獨立,改變其中一個不會影響其餘兩個,因此依據這種設計思想能構造良好的少互擾性的構件。服務器

此外,控制器提升了應用程序的靈活性和可配置性。控制器能夠用來鏈接不一樣的模型和視圖去完成用戶的需求,也能夠構造應用程序提供強有力的手段。給定一些可重用的模型和視圖,控制器能夠根據用戶的需求選擇適當的模型進行處理,而後選擇適當的的視圖將處理結果顯示給用戶。架構

MVC的優勢
1.低耦合性

  視圖層和業務層分離,這樣就容許更改視圖層代碼而不用從新編譯模型和控制器代碼,一樣,一個應用的業務流程或者業務規則的改變只須要改動MVC的模型層便可。由於模型與控制器和視圖相分離,因此很容易改變應用程序的數據層和業務規則。
2.高重用性和可適用性
  隨着技術的不斷進步,如今須要用愈來愈多的方式來訪問應用程序。MVC模式容許你使用各類不一樣樣式的視圖來訪問同一個服務器端的代碼。它包括任何WEB(HTTP)瀏覽器或者無線瀏覽器(wap),好比,用戶能夠經過電腦也可經過手機來訂購某樣產品,雖然訂購的方式不同,但處理訂購產品的方式是同樣的。因爲模型返回的數據沒有進行格式化,因此一樣的構件能被不一樣的界面使用。例如,不少數據可能用HTML來表示,可是也有可能用WAP來表示,而這些表示所須要的命令是改變視圖層的實現方式,而控制層和模型層無需作任何改變。
3.較低的生命週期成本
  MVC使開發和維護用戶接口的技術含量下降。
4.快速的部署
  使用MVC模式使開發時間獲得至關大的縮減,它使程序員(Java開發人員)集中精力於業務邏輯,界面程序員(HTML和JSP開發人員)集中精力於表現形式上。
5.可維護性
  分離視圖層和業務邏輯層也使得WEB應用更易於維護和修改。
6.有利於軟件工程化管理
  因爲不一樣的層各司其職,每一層不一樣的應用具備某些相同的特徵,有利於經過工程化、工具化管理程序代碼。數據庫設計

相關文章
相關標籤/搜索