分析主要是通過它的控制鏈馁筐、控制流向涂召,View 的變化如何反饋到Model,以及Model的變化如何作用到View上敏沉。
MVC
View 持有了Controller果正,把事件傳遞給Controller,Controller 由此去觸發(fā)Model層的事件盟迟,Model更新完數(shù)據(jù)(網(wǎng)絡(luò)或者本地數(shù)據(jù))之后觸發(fā)View的更新事件
MVP
咋看一下MVP只是MVC的變更版秋泳,把C層替換成了P層,實則不是這樣的攒菠,最根本的是添加了Presenter層迫皱。
MVP其實是MVC的封裝和演化,Controller被拆分辖众,只用它處理View的點擊事件卓起,數(shù)據(jù)綁定,等處理凹炸,而View被拆分戏阅,更加專注于視圖的更新,只做跟視圖相關(guān)的操作还惠,而Presenter被獨立出來饲握,用于溝通View和Model之間的聯(lián)系,Model不能直接作用于View 的更新蚕键,只能通過Presenter來通知View進行視圖的刷新救欧,比如showLoading(),showEmpty()锣光,showToast()等等笆怠,這樣View就完全被獨立出來了,只是被動接受Presenter的命令誊爹,這樣避免了View 有過多的邏輯處理蹬刷,更加簡單。Presenter持有了Model频丘。Model 只用于處理跟數(shù)據(jù)獲取相關(guān)的邏輯办成。
MVVM
又稱狀態(tài)機制,View和ViewModel 是進行綁定的搂漠,改變ViewModel 就會直接作用到View視圖上迂卢,而View 會把事件傳遞給ViewModel,ViewModel去對Model進行操作并接受更新。
MVPVM
可以看到MVPVM 其實就是MVP的變種,加入了MVVM事件特性而克,增加了ViewModel靶壮,功能分類:
View:只做視圖更新操作
Model: 只做數(shù)據(jù)處理,網(wǎng)絡(luò)數(shù)據(jù) 员萍、本地數(shù)據(jù)
Presenter: 只做業(yè)務(wù)邏輯處理腾降,View或者Model 事件分發(fā)
ViewModel: 綁定View 和 Model,添加數(shù)據(jù)變更監(jiān)視器