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

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

内容简介:跟着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篇)


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

查看所有标签

猜你喜欢:

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

高性能MySQL

高性能MySQL

施瓦茨 (Baron Schwartz)、扎伊采夫 (Peter Zaitsev)、特卡琴科 (Vadim Tkachenko) / 宁海元、周振兴、彭立勋、翟卫祥,刘辉 / 电子工业出版社 / 2013-5-1 / 128.00元

《高性能mysql(第3版)》是mysql 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了最新mysql 5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16 章和6 个附录,内容涵盖mysql 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可......一起来看看 《高性能MySQL》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具