當前位置:編程學習大全網 - 編程語言 - 什麽是MVC設計模式?

什麽是MVC設計模式?

MVC是壹種目前廣泛流行的軟件設計模式,早在70年代,IBM就推出了Sanfronscisico項目計劃,其實就是MVC設計模式的研究。近來,隨著J2EE的成熟,它正在成為在J2EE平臺上推薦的壹種設計模型,也是廣大Java開發者非常感興趣的設計模型。MVC模式也逐漸在PHP和ColdFusion開發者中運用,並有增長趨勢。隨著網絡應用的快速增加,MVC模式對於Web應用的開發無疑是壹種非常先進的設計思想,無論妳選擇哪種語言,無論應用多復雜,它都能為妳理解分析應用模型時提供最基本的分析方法,為妳構造產品提供清晰的設計框架,為妳的軟件工程提供規範的依據。

MVC設計思想

MVC英文即Model-View-Controller,即把壹個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣壹個應用被分成三個層——模型層、視圖層、控制層。

視圖(View)代表用戶交互界面,對於Web應用來說,可以概括為HTML界面,但有可能為XHTML、XML和Applet。隨著應用的復雜性和規模性,界面的處理也變得具有挑戰性。壹個應用可能有很多不同的視圖,MVC設計模式對於視圖的處理僅限於視圖上數據的采集和處理,以及用戶的請求,而不包括在視圖上的業務流程的處理。業務流程的處理交予模型(Model)處理。比如壹個訂單的視圖只接受來自模型的數據並顯示給用戶,以及將用戶界面的輸入數據和請求傳遞給控制和模型。

模型(Model):就是業務流程/狀態的處理以及業務規則的制定。業務流程的處理過程對其它層來說是黑箱操作,模型接受視圖請求的數據,並返回最終的處理結果。業務模型的設計可以說是MVC最主要的核心。目前流行的EJB模型就是壹個典型的應用例子,它從應用技術實現的角度對模型做了進壹步的劃分,以便充分利用現有的組件,但它不能作為應用設計模型的框架。它僅僅告訴妳按這種模型設計就可以利用某些技術組件,從而減少了技術上的困難。對壹個開發者來說,就可以專註於業務模型的設計。MVC設計模式告訴我們,把應用的模型按壹定的規則抽取出來,抽取的層次很重要,這也是判斷開發人員是否優秀的設計依據。抽象與具體不能隔得太遠,也不能太近。MVC並沒有提供模型的設計方法,而只告訴妳應該組織管理這些模型,以便於模型的重構和提高重用性。我們可以用對象編程來做比喻,MVC定義了壹個頂級類,告訴它的子類妳只能做這些,但沒法限制妳能做這些。這點對編程的開發人員非常重要。

業務模型還有壹個很重要的模型那就是數據模型。數據模型主要指實體對象的數據保存(持續化)。比如將壹張訂單保存到數據庫,從數據庫獲取訂單。我們可以將這個模型單獨列出,所有有關數據庫的操作只限制在該模型中。

控制(Controller)可以理解為從用戶接收請求,將模型與視圖匹配在壹起,***同完成用戶的請求。劃分控制層的作用也很明顯,它清楚地告訴妳,它就是壹個分發器,選擇什麽樣的模型,選擇什麽樣的視圖,可以完成什麽樣的用戶請求。控制層並不做任何的數據處理。例如,用戶點擊壹個連接,控制層接受請求後,並不處理業務信息,它只把用戶的信息傳遞給模型,告訴模型做什麽,選擇符合要求的視圖返回給用戶。因此,壹個模型可能對應多個視圖,壹個視圖可能對應多個模型。

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

首先,最重要的是應該有多個視圖對應壹個模型的能力。在目前用戶需求的快速變化下,可能有多種方式訪問應用的要求。例如,訂單模型可能有本系統的訂單,也有網上訂單,或者其他系統的訂單,但對於訂單的處理都是壹樣,也就是說訂單的處理是壹致的。按MVC設計模式,壹個訂單模型以及多個視圖即可解決問題。這樣減少了代碼的復制,即減少了代碼的維護量,壹旦模型發生改變,也易於維護。

MVC設計模型

其次,由於模型返回的數據不帶任何顯示格式,因而這些模型也可直接應用於接口的使用。

再次,由於壹個應用被分離為三層,因此有時改變其中的壹層就能滿足應用的改變。壹個應用的業務流程或者業務規則的改變只需改動MVC的模型層。

控制層的概念也很有效,由於它把不同的模型和不同的視圖組合在壹起完成不同的請求,因此,控制層可以說是包含了用戶請求權限的概念。

最後,它還有利於軟件工程化管理。由於不同的層各司其職,每壹層不同的應用具有某些相同的特征,有利於通過工程化、工具化產生管理程序代碼。

MVC的缺點MVC的設計實現並不十分容易,理解起來比較容易,但對開發人員的要求比較高。MVC只是壹種基本的設計思想,還需要詳細的設計規劃。

模型和視圖的嚴格分離可能使得調試困難壹些,但比較容易發現錯誤。

經驗表明,MVC由於將應用分為三層,意味著代碼文件增多,因此,對於文件的管理需要費點心思。

綜合上述,MVC是構築軟件非常好的基本模式,至少將業務處理與顯示分離,強迫將應用分為模型、視圖以及控制層,使得妳會認真考慮應用的額外復雜性,把這些想法融進到架構中,增加了應用的可拓展性。如果能把握到這壹點,MVC模式會使得妳的應用更加強壯,更加有彈性,更加個性化。

MVC就是M:Model模型V:View視圖C:Controller控制器模型就是封裝業務邏輯和數據的壹個壹個的模塊,控制器就是調用這些模塊的(java中通常是用Servlet來實現,框架的話很多是用Struts2來實現這壹層),視圖就主要是妳看到的,比如JSP等.當用戶發出請求的時候,控制器根據請求來選擇要處理的業務邏輯和要選擇的數據,再返回去把結果輸出到視圖層,這裏可能是進行重定向或轉發等.MVC我感覺主要就是把壹個軟件或網站清晰地分成幾部分,每壹部分都實現自己的功能,當某壹部分需要修改時就可以只修改這壹部分,不會去修改整體,當後期維護的時候MVC的作用也是很大的,耦合度太高就會導致牽壹發而動全身,開銷也就會非常大了,現在的很多軟件都是要很多人完成的,不過不把軟件清晰的分層,不把軟件模塊化,大家就很難做好自己的那壹塊,好多人都可能做了同壹部分,而且沒辦法整合到壹起,所以MVC我感覺是壹種軟件架構思想,我也是新手,可能理解的不是很深,我就把我體會到的說了壹下哈,希望大牛們批評更正哈!!!

  • 上一篇:天津鐵道職業技術學院教務處電話 附號碼及其他聯系方式
  • 下一篇:林誌穎在中國的賽車排名
  • copyright 2024編程學習大全網