從MVC理解設計模式

2021-09-01 15:38:25 字數 1421 閱讀 9993

[size=x-large] 本文將透過mvc來幫助我們理解「模式」這一術語的含義。

mvc包含三類物件。模型model是應用物件,檢視view是它在螢幕上的標示,控制器controller定義使用者介面對使用者輸入的相應方式。不使用mvc,使用者介面設計往往將這些物件混在一起,而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三個設計模式給提出的。[/size][/size][/size][/size][/size]

如何理解MVC設計模式

mvc是一種架構模式,m表示model,v表示檢視view,c表示控制器controller model負責儲存 定義 運算元據 view用來展示書給使用者,和使用者進行操作互動 controller是model和view的協調者,controller把model中的資料拿過來給view用。cont...

mvc與設計模式的理解

下面是我自己的總結,mvc是一種框架級別的設計模式,針對的 重用,維護性,而我們的介面卡,單例等一些設計模式其實是在編碼過程中的一些總結,例如在ci框架中,db驅動類的設計的寫法就是應用了介面卡的設計模式,原則就是提供唯一的介面,對程式設計師遮蔽差異,還是有快取驅動的設計也是一樣的,有file,ap...

MVC設計模式的簡單理解

mvc設計模式中有三個角色 模型 檢視 控制器,其核心是控制器為檢視物件和模型物件建立溝通渠道,就像m和v的中間協調人,將檢視物件和模型物件分離開來。1.在模型物件中封裝資料和基本行為模型物件維護應用程式的資料,並定義運算元據的特定邏輯。模型物件可以復用,因為它所表示的知識適用於特定的問題領域。理想...