簡介
mvc架構是"model-view-controller"的縮寫,中文翻譯為"模型-檢視-控制器"。mvc應用程式總是由這三個部分組成。event(事件)導致controller改變model或view,或者同時改變兩者。只要controller改變了models的資料或者屬性,所有依賴的view都會自動更新。類似的,只要controller改變了view,view會從潛在的model中獲取資料來重新整理自己。
關係圖示
mvc架構與設計模式
mvc架構是乙個複雜的架構,其實現也顯得非常複雜。但是,我們已經總結出了很多可靠的設計模式,多種設計模式結合在一起,使mvc架構的實現變得相對簡單易行。views可以看作一棵樹,顯然可以用composite pattern來實現。views和models之間的關係可以用observer pattern體現。controller控制views的顯示,可以用strategy pattern實現。model通常是乙個調停者,可採用mediator pattern來實現。
設計思想
把乙個應用的輸入、處理、輸出流程按照model、view、controller的方式進行分離,這樣乙個應用被分成三個層——模型層、檢視層、控制層。檢視(view)代表使用者互動介面,乙個應用可能有很多不同的檢視,mvc設計模式對於檢視的處理僅限於檢視上資料的採集和處理,以及使用者的請求,而不包括在檢視上的業務流程的處理。業務流程的處理交予模型(model)處理。比如乙個訂單的檢視只接受來自模型的資料並顯示給使用者,以及將使用者介面的輸入資料和請求傳遞給控制和模型。模型(model):就是業務流程/狀 態的處理以及業務規則的制定。業務流程的處理過程對其它層來說是黑箱操作,模型接受檢視請求的資料,並返回最終的處理結果。業務模型還有乙個很重要的模型 那就是資料模型。資料模型主要指實體物件的資料儲存(持續化)。比如將一張訂單儲存到資料庫,從資料庫獲取訂單。我們可以將這個模型單獨列出,所有有關數 據庫的操作只限制在該模型中。控制(controller)可以理解為從使用者接收請求, 將模型與檢視匹配在一起,共同完成使用者的請求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是乙個分發器,選擇什麼樣的模型,選擇什麼樣的檢視,可以完成什麼樣的使用者請求。控制層並不做任何的資料處理。例如,使用者點選乙個連線,控制層接受請求後, 並 不處理業務資訊,它只把使用者的資訊傳遞給模型,告訴模型做什麼,選擇符合要求的檢視返回給使用者。因此,乙個模型可能對應多個檢視,乙個檢視可能對應多個模 型。 模型、檢視與控制器的分離,使得乙個模型可以具有多個顯示檢視。如果使用者通過某個檢視的控制器改變了模型的資料,所有其它依賴於這些資料的檢視都 應反映到這些變化。因此,無論何時發生了何種資料變化,控制器都會將變化通知所有的檢視,導致顯示的更新。這實際上是一種模型的變化-傳播機制。
實現
asp net
asp net提供了乙個很好的實現這種經典設計模式的類似環境。開發者通過在aspx頁面中開發使用者介面來實現檢視;控制器的功能在邏輯功能**(.cs)中實現;模型通常對應應用系統的業務部分。
mfc
mvc的優點
例如,訂單模型可能有本系統的訂單,也有網上訂單,或者其他系統的訂單,但對於訂單的處理都是一樣,也就是說訂單的處理是一致的。按mvc設 計模式,乙個訂單模型以及多個檢視即可解決問題。這樣減少了**的複製,即減少了**的維護量,一旦模型發生改變,也易於維護。其次,由於模型返回的資料 不帶任何顯示格式,因而這些模型也可直接應用於介面的使用。再次,由於乙個應用被分離為三層,因此有時改變其中的一層就能滿足應用的改變。乙個應用的業務 流程或者業務規則的改變只需改動mvc的模型層。控制層的概念也很有效,由於它把不同的模型和不同 的檢視組合在一起完成不同的請求,因此,控制層可以說是包含了使用者請求許可權的概念。最後,它還有利於軟體工程化管理。由於不同的層各司其職,每一層不同的 應用具有某些相同的特徵,有利於通過工程化、工具化產生管理程式**。
mvc的不足
(1)增加了系統結構和實現的複雜性。對於簡單的介面,嚴格遵循mvc,使模型、檢視與控制器分離,會增加結構的複雜性,並可能產生過多的更新操作,降低執行效率。
(2)檢視與控制器間的過於緊密的連線。檢視與控制器是相互分離,但確實聯絡緊密的部件,檢視沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。 (3)檢視對模型資料的低效率訪問。依據模型操作介面的不同,檢視可能需要多次呼叫才能獲得足夠的顯示資料。對未變化資料的不必要的頻繁訪問,也將損害操作效能。
(4) 目前,一般高階的介面工具或構造器不支援mvc架構。改造這些工具以適應mvc需要和建立分離的部件的代價是很高的,從而造成使用mvc的困難。
初識MVC框架
什麼是mvc?剛開始聽到mvc這個詞的時候,對其茫無所知,通過近期的學習,對其有所了解。mvc全名是model view controller,是模型 model 檢視 view 控制器 controller 的縮寫,一種軟體設計典範,用一種業務邏輯 資料 介面顯示分離的方法組織 將業務邏輯聚集到乙...
我的初識《MVC》
我的初識 mvc mvc全名是model view controller,是模型 model 檢視 view 控制器 controller 的縮寫,一種軟體設計典範,用一種業務邏輯 資料 介面顯示分離的方法組織 將業務邏輯聚集到乙個部件裡面,在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業...
MVC模式 MVVM模式
mvc是一種架構模式,m表示model,v表示檢視view,c表示控制器controller model負責儲存 定義 運算元據 view用於展示介面,與使用者進行操作互動 controller是model和view之間的橋梁,將model中的資料傳遞到view。關係解讀 controller可以直...