Android MVP模式 谷歌官方代碼解讀
Google官方MVP Sample代碼解讀
關(guān)于Android程序的構(gòu)架, 當前(2016.10)最流行的模式即為MVP模式, Google官方提供了Sample代碼來展示這種模式的用法.
Repo地址: android-architecture.
本文為閱讀官方sample代碼的閱讀筆記和分析.
官方Android Architecture Blueprints [beta]:
Android在如何組織和構(gòu)架一個app方面提供了很大的靈活性, 但是同時這種自由也可能會導致app在測試, 維護, 擴展方面變得困難.
Android Architecture Blueprints展示了可能的解決方案. 在這個項目里, 我們用各種不同的構(gòu)架概念和工具實現(xiàn)了同一個應(yīng)用(To Do App). 主要的關(guān)注點在于代碼結(jié)構(gòu), 構(gòu)架, 測試和維護性.
但是請記住, 用這些模式構(gòu)架app的方式有很多種, 要根據(jù)你的需要, 不要把這些當做絕對的典范.
MVP模式 概念
之前有一個MVC模式: Model-View-Controller.
MVC模式 有兩個主要的缺點: 首先, View持有Controller和Model的引用; 第二, 它沒有把對UI邏輯的操作限制在單一的類里, 這個職能被Controller和View或者Model共享.
所以后來提出了MVP模式來克服這些缺點.
MVP(Model-View-Presenter)模式:
- Model: 數(shù)據(jù)層. 負責與網(wǎng)絡(luò)層和數(shù)據(jù)庫層的邏輯交互.
- View: UI層. 顯示數(shù)據(jù), 并向Presenter報告用戶行為.
-
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中有四個功能:
- Tasks
- TaskDetail
- AddEditTask
- Statistics
每個功能都有:
- 一個定義View和Presenter接口的Contract接口;
- 一個Activity用來管理fragment和presenter的創(chuàng)建;
- 一個實現(xiàn)了View接口的Fragment;
- 一個實現(xiàn)了Presenter接口的presenter.
延伸閱讀
學習是年輕人改變自己的最好方式