一.MVC
1.
M: 模型(Model):數(shù)據(jù)保存
V: 視圖(View):用戶界面唱矛。
C: 控制器(Controller):業(yè)務(wù)邏輯
- View 傳送指令到 Controller
- Controller 完成業(yè)務(wù)邏輯后,要求 Model 改變狀態(tài)
- Model 將新的數(shù)據(jù)發(fā)送到 View井辜,用戶得到反饋
2.互動模式
-
1)通過 View 接受指令揖赴,傳遞給 Controller
用戶操作->View(負(fù)責(zé)接收用戶的輸入操作)->Controller(業(yè)務(wù)邏輯處理)->Model(數(shù)據(jù)持久化)->View(將結(jié)果反饋給View)
-
2)直接通過controller接受指令。
- 3)
用戶可以向 View 發(fā)送指令(DOM 事件)抑胎,再由 View 直接要求 Model 改變狀態(tài)。
用戶也可以直接向 Controller 發(fā)送指令(改變 URL 觸發(fā) hashChange 事件)渐北,再由 Controller 發(fā)送給 View阿逃。
Controller 非常薄,只起到路由的作用,而 View 非常厚恃锉,業(yè)務(wù)邏輯都部 署在 View搀菩。
二、MVP
各部分之間的通信破托,都是雙向的肪跋。
View 與 Model 不發(fā)生聯(lián)系,都通過 Presenter 傳遞土砂。
View 非常薄州既,不部署任何業(yè)務(wù)邏輯,稱為"被動視圖"(Passive View)萝映,即沒有任何主動性吴叶,而 Presenter非常厚,所有邏輯都部署在那里序臂。
三蚌卤、MVVM
MVVM 模式將 Presenter 改名為 ViewModel,基本上與 MVP 模式完全一致奥秆。唯一的區(qū)別是逊彭,它采用雙向綁定(data-binding):View的變動,自動反映在 ViewModel构订,反之亦然
優(yōu)點(diǎn):
1.方便測試
在MVC下侮叮,Controller基本是無法測試的,里面混雜了個(gè)各種邏輯鲫咽,而且分散在不同的地方签赃。而對于MVVM我們可以測試?yán)锩娴膙iewModel,來驗(yàn)證處理結(jié)果
2.便于代碼的移植
3.兼容MVC
MVVM是MVC的一個(gè)升級版分尸,目前的MVC也可以很快的轉(zhuǎn)換到MVVM這個(gè)模式锦聊。VC可以省去一大部分展示邏輯。缺點(diǎn):
1.類會增多
2.每個(gè)VC都附帶一個(gè)viewModel箩绍,類的數(shù)量*2
3.viewModel會越來越龐大
4.調(diào)用復(fù)雜度增加