MVC模式(三層架構模式)
(Model-View-Controller)是軟件工程中的一種軟件架構模式,把軟件系統(tǒng)分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。
MVC模式最早由Trygve Reenskaug在1974年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程序語言Smalltalk發(fā)明的一種軟件設計模式。MVC模式的目的是實現(xiàn)一種動態(tài)的程序設計,使后續(xù)對程序的修改和擴展簡化,并且使程序某一部分的重復利用成為可能。除此之外,此模式通過對復雜度的簡化,使程序結構更加直觀。軟件系統(tǒng)通過對自身基本部份分離的同時也賦予了各個基本部分應有的功能。專業(yè)人員可以通過自身的專長分組:
(控制器Controller)- 負責轉發(fā)請求,對請求進行處理。(視圖View) - 界面設計人員進行圖形界面設計。(模型Model) - 程序員編寫程序應有的功能(實現(xiàn)算法等等)、數(shù)據庫專家進行數(shù)據管理和數(shù)據庫設計(可以實現(xiàn)具體的功能)。
MVC工作原理
MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。
視圖 視圖是用戶看到并與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術已層出不窮,它們包括Macromedia Flash和像XHTML,XML/XSL,WML等一些標識語言和Web services. 如何處理應用程序的界面變得越來越有挑戰(zhàn)性。MVC一個大的好處是它能為你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發(fā)生,不管這些數(shù)據是聯(lián)機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據并允許用戶操縱的方式。 模型 模型表示企業(yè)數(shù)據和業(yè)務規(guī)則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用像EJBs和ColdFusion Components這樣的構件對象來處理數(shù)據庫。被模型返回的數(shù)據是中立的,就是說模型與數(shù)據格式無關,這樣一個模型能為多個視圖提供數(shù)據。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。 控制器 控制器接受用戶的輸入并調用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發(fā)送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調用哪個模型構件去處理請求,然后確定用哪個視圖來顯示模型處理返回的數(shù)據。 現(xiàn)在我們總結MVC的處理過程,首先控制器接收用戶的請求,并決定應該調用哪個模型來進行處理,然后模型用業(yè)務邏輯來處理用戶的請求并返回數(shù)據,最后控制器用相應的視圖格式化模型返回的數(shù)據,并通過表示層呈現(xiàn)給用戶。
MVC框架模式的優(yōu)點
1、開發(fā)人員可以只關注整個結構中的其中某一層;
2、可以很容易的用新的實現(xiàn)來替換原有層次的實現(xiàn);
3、可以降低層與層之間的依賴;
4、有利于標準化;
5、利于各層邏輯的復用。
MVC框架模式的缺點
(1) 增加了系統(tǒng)結構和實現(xiàn)的復雜性。對于簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增加結構的復雜性,并可能產生過多的更新操作,降低運行效率。?
(2) 視圖與控制器間的過于緊密的連接。視圖與控制器是相互分離,但確實聯(lián)系緊密的部件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。
(3)視圖對模型數(shù)據的低效率訪問。依據模型操作接口的不同,視圖可能需要多次調用才能獲得足夠的顯示數(shù)據。對未變化數(shù)據的不必要的頻繁訪問,也將損害操作性能。