1. 程式人生 > >【MVC設計思想】總結

【MVC設計思想】總結

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

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.有利於軟體工程化管理
  由於不同的層各司其職,每一層不同的應用具有某些相同的特徵,有利於通過工程化、工具化管理程式程式碼。