Mark的架构学习笔记— Android_MVP(二)
前言
之前我写的一个笔记,没有结合网络请求,现在我想记录下我这次结合网络请求Retrofit的MVP编程。
我上一篇的笔记:马克的架构学习笔记— Android_MVP,代码笔记中有链接。
根据慕课网上的学习的代码链接:根据手机号查询号码信息
这篇笔记我不贴代码,制作个笔记记录,项目代码不能外泄。
老话重提,啥事MVP模式?
这个问题是真的很重要,MVP就是一个编程思想,让代码具有层次感,逻辑鲜明。
在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,即重用! 不仅如此,我们还可以编写测试用的View,模拟用户的各种操作,从而实现对Presenter的测试–而不需要使用自动化的测试工具。
优点
模型与视图完全分离,我们可以修改视图而不影响模型
可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部
我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)
(1)降低耦合度
(2)模块职责划分明显
(3)利于测试驱动开发
(4)代码复用
(5)隐藏数据
(6)代码灵活性
缺点
由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。还有一点需要明白,如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了
大白话
- View层就是用于自己显示的,你需要什么样的显示接口,就可以在View层中定义。
- Presenter层就是协调View和Model层的,可以将网络请求和接 main 显示的方法调用放在P层,然后调用model层的方法,我这一般就是保存数据和获取数据。
- model其实就是数据管理类