了解相关更多技术,可参考《我就死磕安卓了,怎么了?》,接下来谈一谈咱们来学习一下MVP的基本认识。html
你们对MVC的架构模式再熟悉不过。今天咱们就学习一下MVP架构模式。java
因为对视图的渲染放在了Presenter中,因此视图和Persenter的交互会过于频繁。android
还有一点你须要明白,若是Presenter过多地渲染了视图,每每会使得它与特定的视图的 联系过于紧密。一旦视图须要变动,那么 Presenter也须要变动了。好比说,本来用来呈现Html的Presenter如今也须要用于呈现Pdf了,那么视图颇有可能也须要变动。git
效果图:github
看起来要复杂的比较多。代码量也相对比较大。可是若是用到大项目中咱们就能显示出优点了。接下来进行mvp的封装。数据库
时间久了,咱们就会发现mvp会带来极大的方面:在MVP中,因为业务逻辑都在Presenter里,咱们彻底能够写一个PresenterTest的实现类继承Presenter的接口,如今只要在Activity里把Presenter的建立换成PresenterTest,就能进行单元测试了,测试完再换回来便可。万一发现还得进行测试,那就再换成PresenterTest吧。服务器
Model层:微信
这一层主要就是负责向数据源(通常为服务器/数据库,下同)发起获取数据请求,而且把获取的数据或者错误信息回调给持有的Presenter。除了发起请求功能外,通常咱们还须要一个取消请求的方法。网络
因此Model层主要的功能是:架构
Presenter层:
这层主要负责通知Model层向服务器发起请求并接收Model层回调的数据或者错误信息,而且这一层还要负责把数据或者错误信息处理后回调到View层,由View层负责显示。 通常在网络请求中的错误信息分为两种,一种是网络设备的网络状态错误,没法发送请求;另一种是服务器拒绝了此次请求。因此Presenter的主要功能是:
View层:
在MVP模式中,View层是一个接口。它的首要任务是把Presenter处理后的数据传到具体的原生控件中显示,而且控制是否显示加载进度条。 因此View层的主要功能是:
MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model类仍是原来的Model。
在MVP模式中Activity的功能就是响应生命周期和显示界面,具体其余的工做都丢到了Presenter层中进行完成,Presenter实际上是Model层和View层的桥梁。
项目地址:
https://github.com/androidstarjack/MvpSimpleStudy
服务端测试项目地址:
http://download.csdn.net/download/androidstarjack/9966557
参考连接:
http://www.360doc.com/content/13/0808/13/7427585_305589280.shtml
遗留问题:
总结:过多的追求模式有时候也会拔苗助长,MVC应用有时候也有太多的宽泛。
(欢迎关注学习和交流)
MVP+Dagger2+Retrofit2.0+Rxjava看这一个例子就够了
微信公众号:终端研发部
若是您以为颇有帮助,欢迎随时撩我。