MVP不好吗?
- V:界面相关(界面的展示,用户操作的触发)
- M:数据相关(基本数据的定义,数据的处理:增删该查)
- P:中介(是在M和V之间的中间商。拿到M给的数据,再小小的处理下,最后交给V)
从以上可以看出,mvp的逻辑还是很清楚的嘛!有哪里可以做的更好呢?
从P层扮演的中间商下手:
比如这样的一个情况:
M层:从网络获取到了一堆新闻数据
P层:将M层获取到的数据过滤一下(过滤掉不健康的信息)
V层:显示P层过滤后的信息
我们可以将P层的将M层获取到的数据过滤一下(过滤掉不健康的信息)
这个逻辑抽取出来,做成一个单独的模块!相当于这个商业逻辑独立了,针对这个逻辑,我们可以肆意的虐待他,比如测试(因为是个单独的模块了,所有非常方便测试)!
将商业逻辑抽象
抽象:
抽象说的太玄乎了,其实就是考虑将商业逻辑封装成类!
比如对人的相关信息可以封装成Person
,在clean架构里,我们将商业逻辑封装成UseCase
所谓商业逻辑其实就是:
针对你给的数据--->处理--->处理完成后的数据交出来
综上:我们的UseCase
就是如下啦:
针对某个功能,你对P的分解,可以写出好几个usecase啦:
限于篇幅,针对具体的
UseCase
的实现,我就不细说了,很简单的,你们细看。这个例子的地址:
https://github.com/android10/Android-CleanArchitecture
其它
你现在有一堆商业逻辑啦,一般商业逻辑的处理在后台执行,而处理后的结果需要切换到主线程。(Ok,我们有RxJava,很方便的来完成这个)
现在,我们用UseCaseHandler
来解决这个问题:(大同小易,可看可不看)
代码我就补贴了,代码地址在:
https://github.com/android10/Android-CleanArchitecture