MVC 模式
Model-View-Controller ,模型-視圖-控制器模式
- Model:針對業務模型,建立的數據結構,Model 與 View 無關,而與業務有關。
- View:Android 中一般採用 XML 文件描述。
- Controller:Android 中通常在 Activity,Fragment 中處理。
MVC 整體的實現過程可以概括為:
Controller 來操作 Model並將結果返回給 View 展示

一圖勝前言.png
從圖上可以看出 MVC 模式的缺點是 View 定義不夠清晰,xml 文件屬於 View 但是 Activity 、Fragment 中也有 View 的操作,為了解決這個問題,因此出現了 MVP 模式。
MVP 模式
Model-View-Presenter,是 MVC 的演化版本。
- Model:主要提供數據的存取功能
- View:Android 中一般是 Activity,Fragment,xml 文件
- Presenter:作為 View 和 Model 之間的橋樑。
MVP 整體的實現過程可以概括為:
Model 定義好存取接口,Presenter 通過接口調用 Model 中的接口獲取到結果,最後通過 View 接口去展示具體 View

image.png
從上圖可以看出 MVP 解決了 MVC 中 View 定義不清晰的問題,同時劃清了 Model 和 View 的界限,View 不能直接訪問 Model,Model 也是不能直接訪問 View。
MVP 的處理大部分都是通過接口去實現的,這也會導致代碼的邏輯層級較深,所以又出現了一個架構模式 MVVM。
MVVM 模式
了解的不是很深入,寫的可能有誤,參考即可。
Model-View-ViewModel,和 MVP 類似,但是使用 ViewModel 替換了 Presenter 。
ViewModel :View 和 Model雙向綁定,View 發生改變後 ViewModel 會通知 Model 跟隨改變,同理 Model 改變 ViewModel 也會通知 View 跟隨改變。

image.png
MVVM 雖然解決了 MVP 中代碼層級深度過深問題,但是需要使用 DataBinding,代碼層面也不易理解。
假裝總結一下
在實際開發中,採用 MVP 模式已經足夠了,雖然類文件會變多一些,但是能夠降低代碼之間的偶爾同時便於維護,這就夠了。
對於 MVP 的學習,入門例子推薦 谷歌 GitHub 上的 TODO-MVP 例子。
如果想深入可以再把 TODO 系列看完,聽說 MVP + RxJava + Dagger2 很香?
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/323341.html