MVP是模型(Model)、視圖(View)、主持人(Presenter)的縮寫,分別表明項目中3個不一樣的模塊。html
模型(Model):負責處理數據的加載或者存儲,好比從網絡或本地數據庫獲取數據等;java
視圖(View):負責界面數據的展現,與用戶進行交互;android
主持人(Presenter):至關於協調者,是模型與視圖之間的橋樑,將模型與視圖分離開來。git
View與Model並不直接交互,而是使用Presenter做爲View與Model之間的橋樑。其中Presenter中同時持有Viwe層以及Model層的Interface的引用,而View層持有Presenter層Interface的引用。當View層某個界面須要展現某些數據的時候,首先會調用Presenter層的某個接口,而後Presenter層會調用Model層請求數據,當Model層數據加載成功以後會調用Presenter層的回調方法通知Presenter層數據加載完畢,最後Presenter層再調用View層的接口將加載後的數據展現給用戶。這就是MVP模式的整個核心過程。這樣分層的好處就是大大減小了Model與View層之間的耦合度。一方面可使得View層和Model層單獨開發與測試,互不依賴。另外一方面Model層能夠封裝複用,能夠極大的減小代碼量。固然,MVP還有其餘的一些優勢,這裏再也不贅述。github
https://github.com/googlesamples/android-architecture數據庫
All projects are released in their own branch. Check each project's README for more information.網絡
todo-mvp/ - Basic Model-View-Presenter architecture.架構
todo-mvp-loaders/ - Based on todo-mvp, fetches data using Loaders.ide
todo-mvp-databinding/ - Based on todo-mvp, uses the Data Binding Library.測試
In progress:
dev-todo-mvp-contentproviders/ - Based on todo-mvp-loaders, uses Content Providers
dev-todo-mvp-clean/ - Based on todo-mvp, uses concepts from Clean Architecture.
dev-todo-mvp-dagger/ - Based on todo-mvp, uses Dagger2 for Dependency Injection
Also, see "New sample" issues for planned samples.
全部項目都發布在本身的分支。檢查每一個項目的README的更多信息。
todo-mvp / -基本Model-View-Presenter架構。
基於todo-mvp todo-mvp-loaders / -,用裝載機獲取數據。
基於todo-mvp todo-mvp-databinding / -,使用數據綁定庫。
進展:
基於todo-mvp-loaders dev-todo-mvp-contentproviders / -,使用內容提供者
基於todo-mvp dev-todo-mvp-clean / -,使用概念從清潔架構。
基於todo-mvp dev-todo-mvp-dagger / -,使用Dagger2依賴注入
同時,看到「新樣本」問題樣品計劃。
使用MVP,Dagger,Rxjava,使用Template生成模版代碼 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2016/1122/6793.html