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