MVC
MVC模式很多都熟悉篱蝇,就是模型(M)-視圖(V)-控制器(C)模式贺待,大多都應(yīng)用在網(wǎng)頁(yè)開(kāi)發(fā)上,比較典型的如SPRING MVC零截,就嚴(yán)格的遵循了MVC模式來(lái)進(jìn)行開(kāi)發(fā)麸塞。模型(Model)代表了應(yīng)用程序的狀態(tài)、更新涧衙、維護(hù)哪工、查詢后端數(shù)據(jù)庫(kù)的數(shù)據(jù)以及一些其他的原始數(shù)據(jù)等奥此。視圖(View)就比較直觀了,它定義了用戶從應(yīng)用程序所看到的一切正勒。它包含了用戶界面以及非可視的導(dǎo)出數(shù)據(jù)(如XML、JSON傻铣、CSV章贞、HTML等)》侵蓿控制器(Controller)接收從視圖發(fā)送過(guò)來(lái)的事件然后傳送給模型鸭限,模型處理這些事件并且同步模型中發(fā)生改變的東西到視圖去。大致示意圖如下:
MVVM
MVVM模式是從MVC模式改變而來(lái)的两踏。大多數(shù)都支持MVVM實(shí)際上是基于MVC中的視圖和視圖的狀態(tài)败京,但仍然和模型有互連的。在MVVM模式中梦染,ViewModel取代了控制器赡麦。但ViewModel和Model的職責(zé)卻不同了。大致示意圖如下:
從圖上可知帕识,現(xiàn)在視圖和模型是沒(méi)有聯(lián)系了泛粹,都是通過(guò)ViewModel來(lái)進(jìn)行互連交互的。MVVM的核心就是“數(shù)據(jù)模型數(shù)據(jù)雙向綁定”肮疗。也就是視圖的數(shù)據(jù)變化會(huì)通過(guò)ViewModel馬上修改模型的數(shù)據(jù)晶姊,同樣模型的數(shù)據(jù)變化也會(huì)馬上提現(xiàn)到視圖上去。
通過(guò)對(duì)MVVM的進(jìn)一步了解以后伪货,我們可以將示意圖表現(xiàn)如下:
從圖上可以看出们衙,視圖和ViewModel是雙向綁定的,視圖數(shù)據(jù)改變后通過(guò)ViewModel來(lái)更新模型(Model)中數(shù)據(jù)碱呼,模型更新后通知(notify)ViewModel來(lái)將改變的數(shù)據(jù)變現(xiàn)在視圖上蒙挑。
當(dāng)然,我更傾向于以下示意圖中所示的愚臀,在View和ViewModel的雙向綁定中隱式的引入了binder層脆荷;