跟着google学习mvp架构(clean篇)

栏目: 后端 · 发布时间: 7年前

内容简介:跟着google学习mvp架构(clean篇)

作者博客

http://www.jianshu.com/u/cd0fe10b01d2

文章目录

  1. 前言

  2. 文件目录

  3. 事件调度流程

  4. 总结

1

前言

第一篇「 跟着google学习mvp架构 介绍的Todo-mvp源码体验,这是基础篇。

这一节是要介绍含有域名层的MVP架构 todo-mvp-clean

跟着google学习mvp架构(clean篇)

我们可以看到它比基本的MVP架构其中添加了一层新的Domain Layer层。

其包装都是通过一个个UseCase来完成V层和M层的交互的。

2

文件目录

跟着google学习mvp架构(clean篇)

我们看看基础的文件目录的不同,其添加了一个domain的一个目录,里面有usecase的目录,用于对Task的操作。

跟着google学习mvp架构(clean篇)

而tasks的目录里面保持的其他操作。

Task 保存的是基本的任务信息类,都是以Task基本对象来传递任务。

filter就是创建对符合要求的Task任务的过滤,包括完成任务的过滤和进行中的任务。

usecase里面就是一些公用的任务类。

跟着google学习mvp架构(clean篇)

最主要的核心就是代码 每个XXXTask的任务都需要继承于 UseCase

UseCaseHandler完成每个任务的调度和回调方法。

当然需要做成异步任务的,所以我们需要创建线程池,UseCaseThreadPoolScheduler就是自定义的线程池调度类

3

事件调度流程

在其他资料里找到clean架构一个deleteTask的一个时序图,其基本的流程都是一致。

这里使用了一种设计模式,到最后会告诉大家。

跟着google学习mvp架构(clean篇)

基本分析一下UseCase

跟着google学习mvp架构(clean篇)

其中泛型需要使用RequestValues和ResponseValue时要注意,然后其里面有UseCallBack的回调接口,并提供Get和Set的方法,而run的方法需要调用抽象excuteUseCase的方法,需要父类实现。

跟着google学习mvp架构(clean篇)

然后DeleteTask里面可以看到有一些MVP架构的taskRepository的操作,覆写了excuteUseCase方法,然后还需要继承RequestValues和ResponseValue创建两个静态的类

跟着google学习mvp架构(clean篇)

然后InJection.java里面提供了一堆的useCase的对象的静态方法provideXXX

跟着google学习mvp架构(clean篇)

我们查看TaskDetailPresenter.java里面的deleteTask的方法, 使用了mUseCaseHandler.excute的方法

跟着google学习mvp架构(clean篇)

mUseCaseHandler的对象也是由上面Injection的provideXXX的方法提供

跟着google学习mvp架构(clean篇)

其中UseCaseHandler的excute的方法使用了需要输入三个参数,一个是useCase,一个是requestValue,另一个是回调callback。

通过UseCaseScheduler的excute的方法,再嵌入useCase的runnable调用。

跟着google学习mvp架构(clean篇)

通过useCase.run会调用回DeleteTask.excuteUseCase的方法,然后调用getUseCaseCallBack的方法获取回UseCaseCallback

跟着google学习mvp架构(clean篇)

然后通过onSuccess的回调获取response的数据来操作

到这里流程已经讲了一遍,如果不清楚流程可以研究一下,一开始的时序图。

不知道大家是否知道这里Clean架构运用了一种设计方式?

这里其用了命令模式,通过对不同命令封装统一的excute的方式来替换,关于命令模式大家可以查看一下HeadFirst-设计模式。

4

总结

  1. Clean架构的优势,在于其通过任务委托给一个统一的Handler来运行操作数据的任务,并且其可以封装各种形式命令来达到数据操作的效果

  2. 通过命令类的封装,其简化了Presenter里面的逻辑。

  3. 可以使用线程池机制采用缓存策略。

跟着google学习mvp架构(clean篇)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Computer Age Statistical Inference

Computer Age Statistical Inference

Bradley Efron、Trevor Hastie / Cambridge University Press / 2016-7-21 / USD 74.99

The twenty-first century has seen a breathtaking expansion of statistical methodology, both in scope and in influence. 'Big data', 'data science', and 'machine learning' have become familiar terms in ......一起来看看 《Computer Age Statistical Inference》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具