標籤:
MVC。模型Model是應用對象,視圖View是它在螢幕上的標識,控制器Controller定義使用者介面對使用者輸入的回應程式式。
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中的設計模式