簡單圖解 MVP、MVC 、MVVM 模式

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 接口去展現具體 Viewcdn

image.png

從上圖能夠看出 MVP 解決了 MVC 中 View 定義不清晰的問題,同時劃清了 Model 和 View 的界限,View 不能直接訪問 Model,Model 也是不能直接訪問 View。xml

MVP 的處理大部分都是經過接口去實現的,這也會致使代碼的邏輯層級較深,因此又出現了一個架構模式 MVVM。blog

MVVM 模式

瞭解的不是很深刻,寫的可能有誤,參考便可。接口

Model-View-ViewModel,和 MVP 相似,可是使用 ViewModel 替換了 Presenter 。開發

ViewModel :數據和 Model雙向綁定,View 發生改變後 ViewModel 會通知 Model 跟隨改變,同理 Model 改變 ViewModel 也會通知 View 跟隨改變。it

image.png

MVVM 雖然解決了 MVP 中代碼層級深度過深問題,可是須要使用 DataBinding,代碼層面也不易理解。

僞裝總結一下

在實際開發中,採用 MVP 模式已經足夠了,雖然類文件會變多一些,可是可以下降代碼之間的偶爾同時便於維護,這就夠了。

對於 MVP 的學習,入門例子推薦 谷歌 GitHub 上的 TODO-MVP 例子。

若是想深刻能夠再把 TODO 系列看完,據說 MVP + RxJava + Dagger2 很香?

相關文章
相關標籤/搜索