Android MVP模式 谷歌官方代碼解讀

Google官方MVP Sample代碼解讀

關(guān)于Android程序的構(gòu)架, 當(dāng)前(2016.10)最流行的模式即為MVP模式, Google官方提供了Sample代碼來展示這種模式的用法.
Repo地址: android-architecture.
本文為閱讀官方sample代碼的閱讀筆記和分析.

官方Android Architecture Blueprints [beta]:
Android在如何組織和構(gòu)架一個(gè)app方面提供了很大的靈活性, 但是同時(shí)這種自由也可能會(huì)導(dǎo)致app在測試, 維護(hù), 擴(kuò)展方面變得困難.

Android Architecture Blueprints展示了可能的解決方案. 在這個(gè)項(xiàng)目里, 我們用各種不同的構(gòu)架概念和工具實(shí)現(xiàn)了同一個(gè)應(yīng)用(To Do App). 主要的關(guān)注點(diǎn)在于代碼結(jié)構(gòu), 構(gòu)架, 測試和維護(hù)性.
但是請記住, 用這些模式構(gòu)架app的方式有很多種, 要根據(jù)你的需要, 不要把這些當(dāng)做絕對的典范.

MVP模式 概念

之前有一個(gè)MVC模式: Model-View-Controller.
MVC模式 有兩個(gè)主要的缺點(diǎn): 首先, View持有Controller和Model的引用; 第二, 它沒有把對UI邏輯的操作限制在單一的類里, 這個(gè)職能被Controller和View或者M(jìn)odel共享.
所以后來提出了MVP模式來克服這些缺點(diǎn).

MVP(Model-View-Presenter)模式:

  • Model: 數(shù)據(jù)層. 負(fù)責(zé)與網(wǎng)絡(luò)層和數(shù)據(jù)庫層的邏輯交互.
  • View: UI層. 顯示數(shù)據(jù), 并向Presenter報(bào)告用戶行為.
  • Presenter: 從Model拿數(shù)據(jù), 應(yīng)用到UI層, 管理UI的狀態(tài), 決定要顯示什么, 響應(yīng)用戶的行為.
    MVP模式的最主要優(yōu)勢就是耦合降低, Presenter變?yōu)榧僇ava的代碼邏輯, 不再與Android Framework中的類如Activity, Fragment等關(guān)聯(lián), 便于寫單元測試.

todo-mvp 基本的Model-View-Presenter架構(gòu)

app中有四個(gè)功能:

  • Tasks
  • TaskDetail
  • AddEditTask
  • Statistics

每個(gè)功能都有:

  • 一個(gè)定義View和Presenter接口的Contract接口;
  • 一個(gè)Activity用來管理fragment和presenter的創(chuàng)建;
  • 一個(gè)實(shí)現(xiàn)了View接口的Fragment;
  • 一個(gè)實(shí)現(xiàn)了Presenter接口的presenter.

網(wǎng)友評論