總結一下MVC思想

MVC (Model View Controler)原本是存在於Desktop程序中的,M是指數據模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可使用不一樣的表現形式。好比一批統計數據你能夠分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。 php

 

模型-視圖-控制器(MVC)是Xerox PARC在八十年代爲編程語言Smalltalk-80發明的一種軟件設計模式,至今已被普遍使用。最近幾年被推薦爲Sun公司J2EE平臺的設計模式,而且受到愈來愈多的使用 ColdFusion 和 PHP 的開發者的歡迎。模型-視圖-控制器模式是一個有用的工具箱,它有不少好處,但也有一些缺點。 html

 

MVC如何工做 數據庫

 

MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分紅三個核心部件:模型、視圖、控制器。它們各自處理本身的任務。 編程

 

1視圖 後端

視圖是用戶看到並與之交互的界面(它能夠包括一些能夠顯示數據信息的頁面,或者展現形式。例如jsp,html,asp,php)。對老式的Web應用程序來講,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演着重要的角色,但一些新的技術已層出不窮,它們包括Macromedia Flash和象XHTML,XML/XSL,WML等一些標識語言和Web services. 設計模式

 

如何處理應用程序的界面變得愈來愈有挑戰性。MVC一個大的好處是它能爲你的應用程序處理不少不一樣的視圖。在視圖中其實沒有真正的處理髮生,無論這些數據是聯機存儲的仍是一個僱員列表,做爲視圖來說,它只是做爲一種輸出數據並容許用戶操縱的方式。 服務器

 

2模型 jsp

模型表示企業數據和業務規則(能夠說就是後端接口,用於業務處理)在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用象EJBs和ColdFusion Components這樣的構件對象來處理數據庫。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能爲多個視圖提供數據。因爲應用於模型的代碼只需寫一次就能夠被多個視圖重用,因此減小了代碼的重複性。 編程語言

 

3控制器 工具

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

 

如今咱們總結MVC的處理過程,首先控制器接收用戶的請求,並決定應該調用哪一個模型來進行處理,而後模型用業務邏輯來處理用戶的請求並返回數據,最後控制器用相應的視圖格式化模型返回的數據,並經過表示層呈現給用戶。 

我本身作了簡單的示意圖

 

 

 

爲何要使用 MVC 

 

大部分Web應用程序都是用像ASP,PHP,或者CFML這樣的過程化語言來建立的。它們將像數據庫查詢語句這樣的數據層代碼和像HTML這樣的表示層代碼混在一塊兒。

 

經驗比較豐富的開發者會將數據從表示層分離開來,但這一般不是很容易作到的,它須要精心的計劃和不斷的嘗試。MVC從根本上強制性的將它們分開。儘管構造MVC應用程序須要一些額外的工做,可是它給咱們帶來的好處是無庸質疑的。 

 

首先,最重要的一點是多個視圖能共享一個模型,正如我所說起的,如今須要用愈來愈多的方式來訪問你的應用程序。對此,其中一個解決之道是使用MVC,不管你的用戶想要Flash界面或是 WAP 界面;用一個模型就能處理它們。因爲你已經將數據和業務規則從表示層分開,因此你能夠最大化的重用你的代碼了。 

 

因爲模型返回的數據沒有進行格式化,因此一樣的構件能被不一樣界面使用。例如,不少數據可能用HTML來表示,可是它們也有可能要用Macromedia Flash和WAP來表示。模型也有狀態管理和數據持久性處理的功能,例如,基於會話的購物車和電子商務過程也能被Flash網站或者無線聯網的應用程序所重用。 

 

由於模型是自包含的,而且與控制器和視圖相分離,因此很容易改變你的應用程序的數據層和業務規則。若是你想把你的數據庫從MySQL移植到Oracle,或者改變你的基於RDBMS數據源到LDAP,只需改變你的模型便可。

 

一旦你正確的實現了模型,無論你的數據來自數據庫或是LDAP服務器,視圖將會正確的顯示它們。因爲運用MVC的應用程序的三個部件是相互對立,改變其中一個不會影響其它兩個,因此依據這種設計思想你能構造良好的鬆偶合的構件。 

 

對我來講,控制器的也提供了一個好處,就是可使用控制器來聯接不一樣的模型和視圖去完成用戶的需求,這樣控制器能夠爲構造應用程序提供強有力的手段。給定一些可重用的模型和視圖,控制器能夠根據用戶的需求選擇模型進行處理,而後選擇視圖將處理結果顯示給用戶。 

 

MVC的缺點 

 

MVC的缺點是因爲它沒有明確的定義,因此徹底理解MVC並非很容易。使用MVC須要精心的計劃,因爲它的內部原理比較複雜,因此須要花費一些時間去思考。 

 

你將不得不花費至關可觀的時間去考慮如何將MVC運用到你的應用程序,同時因爲模型和視圖要嚴格的分離,這樣也給調試應用程序到來了必定的困難。每一個構件在使用以前都須要通過完全的測試。一旦你的構件通過了測試,你就能夠毫無顧忌的重用它們了。 

 

根據我我的經驗,因爲咱們將一個應用程序分紅了三個部件,因此使用MVC同時也意味着你將要管理比之前更多的文件,這一點是顯而易見的。這樣好像咱們的工做量增長了,可是請記住這比起它所能帶給咱們的好處是不值一提。 

 

MVC並不適合小型甚至中等規模的應用程序,花費大量時間將MVC應用到規模並非很大的應用程序一般會得不償失。 

MVC是很好的建立軟件的途徑 

 

MVC設計模式是一個很好建立軟件的途徑,它所提倡的一些原則,像內容和顯示互相分離可能比較好理解。可是若是你要隔離模型、視圖和控制器的構件,你可能須要從新思考你的應用程序,尤爲是應用程序的構架方面。若是你肯接受MVC,而且有能力應付它所帶來的額外的工做和複雜性,MVC將會使你的軟件在健壯性,代碼重用和結構方面上一個新的臺階。

相關文章
相關標籤/搜索