原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請(qǐng)注明:關(guān)東升的博客
MVC(Model-View-Controller,模型-視圖-控制器)模式是相當(dāng)古老的設(shè)計(jì)模式之一难菌,它最早出現(xiàn)在Smalltalk語言中。現(xiàn)在蔑滓,很多計(jì)算機(jī)語言和架構(gòu)都采用了MVC模式郊酒。
MVC模式概述
MVC模式是一種復(fù)合設(shè)計(jì)模式,由 “觀察者”(Observer)模式键袱、“策略”(Strategy)模式和“合成”(Composite)模式等組成燎窘。MVC模式由3個(gè)部分組成,如圖所示蹄咖,這3個(gè)部分的作用如下所示荠耽。
? 模型。保存應(yīng)用數(shù)據(jù)的狀態(tài)比藻,回應(yīng)視圖對(duì)狀態(tài)的查詢铝量,處理應(yīng)用業(yè)務(wù)邏輯倘屹,完成應(yīng)用的功能,將狀態(tài)的變化通知視圖慢叨。
? 視圖纽匙。為用戶展示信息并提供接口。用戶通過視圖向控制器發(fā)出動(dòng)作請(qǐng)求拍谐,然后再向模型發(fā)出查詢狀態(tài)的申請(qǐng)烛缔,而模型狀態(tài)的變化會(huì)通知給視圖。
? 控制器轩拨。接收用戶請(qǐng)求践瓷,根據(jù)請(qǐng)求更新模型。另外亡蓉,控制器還會(huì)更新所選擇的視圖作為對(duì)用戶請(qǐng)求的回應(yīng)晕翠。控制器是視圖和模型的媒介砍濒,可以降低視圖與模型的耦合度淋肾,使視圖和模型的權(quán)責(zé)更加清晰,從而提高開發(fā)效率爸邢。
對(duì)應(yīng)于哲學(xué)中的“內(nèi)容”與“形式”樊卓, 在MVC模型中,模式是“內(nèi)容”杠河,它存儲(chǔ)了視圖所需要的數(shù)據(jù)碌尔,視圖是“形式”,是外部表現(xiàn)方式券敌,而控制器是它們的媒介唾戚。
Cocoa Touch中的MVC模式
上面我們討論的是通用的MVC模式,而Cocoa和Cocoa Touch框架中的MVC模式與傳統(tǒng)的MVC模式略有不同陪白,前者的模型與視圖不能進(jìn)行任何通信,所有的通信都是通過控制器完成的膳灶,如圖所示咱士。
在Cocoa Touch框架的UIKit框架中,UIViewController是所有控制器的根類轧钓,如UITableViewController序厉、UITabBarController和UINavigationController。UIView是視圖和控件的根類毕箍。