一、MVC

MVC
- MVC是model/view/controller。分別負(fù)責(zé)數(shù)據(jù)處理、視圖界面展示和業(yè)務(wù)邏輯。view接受用戶的交互,將請求傳遞給controller處理,controller將請求發(fā)送給model進(jìn)行數(shù)據(jù)更新,最后傳給view進(jìn)行展示。
- 缺點:activity既是controller又是view,代碼復(fù)雜、測試維護(hù)困難;view和model存在隅合
二、MVP

MVP
- MVP是為解決MVC的缺點,將model和view進(jìn)行解隅、通過presenter進(jìn)行通信。view接收用戶交互后,將請求傳給presenter進(jìn)行處理,p傳給m,m再傳回p通知v進(jìn)行展示
- 優(yōu)點:減少activity的臃腫;解隅合;可以將presenter用于多視圖而不改變presenter的邏輯;presenter與view通過接口交互,便于單元測試
- 缺點:presenter除了業(yè)務(wù)邏輯外,還有大量view->model->view的手動邏輯,造成presenter笨重,維護(hù)困難;presenter修改需要同步修改所有實現(xiàn)類
三、MVVM

MVVM
- MVVM是model,view,viewmodel,presenter升級成viewmodel,實現(xiàn)view和model的雙向綁定,即dataBinding,viewmodel負(fù)責(zé)處理業(yè)務(wù)邏輯。(因為viewmodel和model綁定,所以model/view變動只改以防另一方都能及時更新到)
- 優(yōu)點:model 和view分離更徹底,減輕activity壓力,便于測試等等
- 缺點:對于簡單項目,大材小用;過大的項目內(nèi)存開銷大影響性能;頁面追蹤不方便