天天看點

講清MVC、MVP、MVVM,看這一篇文章就夠了

MVC、MVP、MVVM是 Android 面試中經常被問到的問題,對于每位打算從事 Android 開發的人來說,這部分的知識都是必須掌握的。

下面就由我來為大家整理一下這部分的知識吧。

MVC

MVC 是 Android 預設的設計,MVC将代碼分為三個部分:

  • Model: 負責管理業務資料邏輯 如網絡請求 資料庫處理
  • View: Layout中的XML檔案
  • Controller: Activity檔案 負責處理表現邏輯

MVC進行了代碼的分離,但是分離程度不夠,Activity依舊還需要處理UI,處理使用者互動,承擔部分View的角色,且Model 和 View 仍存在一定的交叉,隔離度不夠。

MVP

MVP将代碼分為三個部分:

  • Model:負責管理業務資料邏輯 如網絡請求 資料庫處理
  • View:Activity 和 Layout中的XML檔案
  • Presenter:負責處理表現邏輯

将Activity的表現邏輯分離出來由Presenter進行管理,邏輯更加清晰,不過增加了各種回調的接口,代碼變得更加複雜,不利于維護,而且互相依賴會導緻互相影響。

MVVM

MVVM将代碼分為三個部分:

  • Model:負責管理業務資料邏輯 如網絡請求 資料庫處理
  • View:Activity 和 Layout中的XML檔案
  • ViewModel:負責處理表現邏輯 并将資料給可觀察資料容器

通過觀察者模式監聽資料的變化,有效規避了MVP的雙向依賴,但是會導緻多資料流的問題,缺少唯一修改源,不易于追蹤。