国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MVC 設計模式:將 Web 應用分三層

2019-11-18 12:44:13
字體:
來源:轉載
供稿:網友

  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 設計模式:將 Web 應用分三層

  MVC設計模型
  其次,由于模型返回的數據不帶任何顯示格式,因而這些模型也可直接應用于接口的使用。
  
  再次,由于一個應用被分離為三層,因此有時改變其中的一層就能滿足應用的改變。一個應用的業務流程或者業務規則的改變只需改動MVC的模型層。
  
  控制層的概念也很有效,由于它把不同的模型和不同的視圖組合在一起完成不同的請求,因此,控制層可以說是包含了用戶請求權限的概念。
  
  最后,它還有利于軟件工程化治理。由于不同的層各司其職,每一層不同的應用具有某些相同的特征,有利于通過工程化、工具化產生治理程序代碼。
  
  MVC的缺點
  MVC的設計實現并不十分輕易, 理解起來比較輕易,但對開發人員的要求比較高。MVC只是一種基本的設計思想,還需要具體的設計規劃。
  
  模型和視圖的嚴格分離可能使得調試困難一些,但比較輕易發現錯誤。
  
  經驗表明,MVC由于將應用分為三層,意味著代碼文件增多,因此,對于文件的治理需要費點心思。
  
  綜合上述,MVC是構筑軟件非常好的基本模式,至少將業務處理與顯示分離,強迫將應用分為模型、視圖以及控制層, 使得你會認真考慮應用的額外復雜性,把這些想法融進到架構中,增加了應用的可拓展性。假如能把握到這一點,MVC模式會使得你的應用更加強壯,更加有彈性,更加個性化。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巫山县| 依兰县| 财经| 秭归县| 永善县| 瑞昌市| 上杭县| 平潭县| 太和县| 新竹县| 津南区| 瑞金市| 运城市| 嫩江县| 华蓥市| 武胜县| 龙口市| 登封市| 松溪县| 文安县| 专栏| 阳谷县| 开鲁县| 星座| 怀安县| 双柏县| 枣强县| 阿巴嘎旗| 治县。| 万宁市| 夹江县| 温宿县| 伊金霍洛旗| 洮南市| 桃江县| 永州市| 舟曲县| 长泰县| 千阳县| 阿鲁科尔沁旗| 团风县|