内容简介:跟着google学习mvp架构(clean篇)
作者博客
http://www.jianshu.com/u/cd0fe10b01d2
文章目录
-
前言
-
文件目录
-
事件调度流程
-
总结
1
前言
第一篇「 跟着google学习mvp架构 」 介绍的Todo-mvp源码体验,这是基础篇。
这一节是要介绍含有域名层的MVP架构 todo-mvp-clean
我们可以看到它比基本的MVP架构其中添加了一层新的Domain Layer层。
其包装都是通过一个个UseCase来完成V层和M层的交互的。
2
文件目录
我们看看基础的文件目录的不同,其添加了一个domain的一个目录,里面有usecase的目录,用于对Task的操作。
而tasks的目录里面保持的其他操作。
Task 保存的是基本的任务信息类,都是以Task基本对象来传递任务。
filter就是创建对符合要求的Task任务的过滤,包括完成任务的过滤和进行中的任务。
usecase里面就是一些公用的任务类。
最主要的核心就是代码 每个XXXTask的任务都需要继承于 UseCase
UseCaseHandler完成每个任务的调度和回调方法。
当然需要做成异步任务的,所以我们需要创建线程池,UseCaseThreadPoolScheduler就是自定义的线程池调度类
3
事件调度流程
在其他资料里找到clean架构一个deleteTask的一个时序图,其基本的流程都是一致。
这里使用了一种设计模式,到最后会告诉大家。
基本分析一下UseCase
其中泛型需要使用RequestValues和ResponseValue时要注意,然后其里面有UseCallBack的回调接口,并提供Get和Set的方法,而run的方法需要调用抽象excuteUseCase的方法,需要父类实现。
然后DeleteTask里面可以看到有一些MVP架构的taskRepository的操作,覆写了excuteUseCase方法,然后还需要继承RequestValues和ResponseValue创建两个静态的类
然后InJection.java里面提供了一堆的useCase的对象的静态方法provideXXX
我们查看TaskDetailPresenter.java里面的deleteTask的方法, 使用了mUseCaseHandler.excute的方法
mUseCaseHandler的对象也是由上面Injection的provideXXX的方法提供
其中UseCaseHandler的excute的方法使用了需要输入三个参数,一个是useCase,一个是requestValue,另一个是回调callback。
通过UseCaseScheduler的excute的方法,再嵌入useCase的runnable调用。
通过useCase.run会调用回DeleteTask.excuteUseCase的方法,然后调用getUseCaseCallBack的方法获取回UseCaseCallback
然后通过onSuccess的回调获取response的数据来操作
到这里流程已经讲了一遍,如果不清楚流程可以研究一下,一开始的时序图。
不知道大家是否知道这里Clean架构运用了一种设计方式?
这里其用了命令模式,通过对不同命令封装统一的excute的方式来替换,关于命令模式大家可以查看一下HeadFirst-设计模式。
4
总结
-
Clean架构的优势,在于其通过任务委托给一个统一的Handler来运行操作数据的任务,并且其可以封装各种形式命令来达到数据操作的效果
-
通过命令类的封装,其简化了Presenter里面的逻辑。
-
可以使用线程池机制采用缓存策略。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 跟着360架构师学shell
- 跟着google学习mvp架构(clean篇)
- 【跟着我们学Golang】基础结构
- 【跟着我们学Golang】流程控制
- 跟着老杨玩python之开篇
- 跟着whatwg看一遍事件循环
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Design Accessible Web Sites
Jeremy Sydik / Pragmatic Bookshelf / 2007-11-05 / USD 34.95
It's not a one-browser web anymore. You need to reach audiences that use cell phones, PDAs, game consoles, or other "alternative" browsers, as well as users with disabilities. Legal requirements for a......一起来看看 《Design Accessible Web Sites》 这本书的介绍吧!
图片转BASE64编码
在线图片转Base64编码工具
RGB CMYK 转换工具
RGB CMYK 互转工具