透過MVC 來看設計模式

2021-05-24 14:15:55 字數 1530 閱讀 1326

2011-02-01 19:13

類的模型/檢視/控制器(model/view/controller)三元組(mvc)被用來構建使用者介面。透過mvc 來看設計模式將幫助我們理解「模式」這一術語的含義。

mvc包括三類物件。模型model是應用物件,檢視view是它在螢幕上的表示,控制器controller定義使用者介面對使用者輸入的響應方式。不使用mvc,使用者介面設計往往將這些物件混在一起,而mvc則將它們分離以提高靈活性和復用性。

下圖顯示了乙個模型和三個檢視(為了簡單起見我們省略了控制器)。模型包含一些資料值,檢視通過電子**、柱狀圖、餅圖這些不同的方式來顯示這些資料。當模型的資料發生變化時,模型就通知它的檢視,而檢視將與模型通訊以訪問這些資料值。

表面上看,這個例子反映了將檢視和模型分離的設計,然而這個設計還可用於解決更一般的問題:將物件分離,使得乙個物件的改變能夠影響另一些物件,而這個物件並不需要知道那些被影響的物件的細節。這個更一般的設計被描述成observer(觀察者)模式。

mvc的另乙個特徵是檢視可以巢狀。例如,按鈕控制面板可以用乙個巢狀了按鈕的複雜檢視來實現。物件檢視器的使用者介面可由巢狀的檢視構成,這些檢視又可復用於偵錯程式。

mvc用view類的子類—compositeview類來支援巢狀檢視。compositeview類的物件行為上類似於view類物件,乙個組合檢視可用於任何檢視可用的地方,但是它包含並管理巢狀檢視。

上例反映了可以將組合檢視與其構件平等對待的設計,同樣地,該設計也適用於更一般的問題:將一些物件劃為一組,並將該組物件當作乙個物件來使用。這個設計被描述為composite(組合)模式,該模式允許你建立乙個類層次結構,一些子類定義了原子物件(如button)而其他類定義了組合物件(compositeview),這些組合物件是由原子物件組合而成的更複雜的物件。

mvc允許你在不改變檢視外觀的情況下改變檢視對使用者輸入的響應方式。例如,你可能希望改變檢視對鍵盤的響應方式,或希望使用彈出選單而不是原來的命令鍵方式。mvc將響應機制封裝在controller物件中。存在著乙個controller的類層次結構,使得可以方便地對原有controller做適當改變而建立新的controller。

view使用controller子類的例項來實現乙個特定的響應策略。要實現不同的響應策略只要用不同種類的controller例項替換即可。甚至可以在執行時刻通過改變view的controller來改變view對使用者輸入的響應方式。例如,乙個view可以被禁止接收任何輸入,只需給它乙個忽略輸入事件的controller。

view – controller關係是strategy(策略)模式的乙個例子。乙個策略是乙個表述演算法的物件。當你想靜態或動態地替換乙個演算法,或你有很多不同的演算法,或演算法中包含你想封裝的複雜資料結構,這時策略模式是非常有用的。

mvc還使用了其他的設計模式,如:用來指定檢視預設控制器的factory method(工廠方法)和用來增加檢視滾動的decorator ( 裝飾 )。但是mvc的主要關係還是由observer、composite和strategy三個設計模式給出的。

MVC設計模式

mvc本來是存在於desktop程式中的,m是指資料模型,v是指使用者介面,c則是控制器。使用mvc的目的是將m和v的實現 分離,從而使同乙個程式可以使用不同的表現形式。比如一批統計資料你可以分別用柱狀圖 餅圖來表示。c存在的目的則是確保m和v的同步,一旦m改變,v應該同步更新。模型 檢視 控制器 ...

MVC設計模式

準確的說,mvc不是一種設計模式,而是更高的構架模式。它是model view controller的縮寫,最早是由xerox 施樂 提出的。隨後,它成為了一種著名的使用者介面設計架構。在mvc經典架構中,它把應用程式 也可以看做是應用程式的乙個模組 分 三個部分 1.模型 模型代表了該應用程式的核...

MVC設計模式

mvc設計模式是非常經典的設計模式,是非常有效率的一種設計模式,比如struts框架就是乙個典型的mvc的框架,下面就介紹一下這種設計模式 mvc英文即model view controller,即把乙個應用的輸入 處理 輸出流程按照model view controller的方式進行分離,這樣乙個...