android 开发的4/365 CleanArchitecture2

昨天对项目分析到最后关键点累的不行了,今天继续。

早上想偷个懒看看微博,结果看着看着看到Retrofit 分析漂亮的解耦,好吧,这么火,那就点进去看一看。看了没几行,跟我说这是源代码,需要有设计模式的知识。然后又百度了JAVA的设计模式,好家伙,23种设计模式。我嘞个去,这是恶补基础知识的节奏啊。23种设计模式,粗看了下,大概也就单例和观察者模式我大概知道点,其他的都是天书哪。而且我估计,不结合实际的代码去写去练习,就是看个几十遍也不一定能吃透这些内容。好吧,这下新的任务又来了。23种设计模式每天学一点,看看自己能学到哪一步吧。Retrofit分析那篇文章我暂时就不细看了,大致看了下,也不是完全云里雾里。暂时我就先掌握我俊哥这个架构里的用法吧。

继续昨天的分析。这里需要把UserListPresenter里的方法拿出来一个个分析,摸清整个架构的来龙去脉。Presenter 在这里感觉有点龙骨的意思,反正最后代码的主要逻辑都写这里了,之前写的一大堆接口啊,抽象类啊,都是为这里服务的。首先看Implement ,第一个是BasePresenter 这个就不讲了,之前讲过。后面的HasRenderView应该是应用了某种设计模式吧,最后作用是把数据赋给view.

构造方法用@inject注释了,里面有两个参数,这是直接从虚拟图里面拿出来的,省却了New的必要。UserModelDataMapper这个类是本身份构造方法就用了@inject注释,可以直接用。@Named("userList") UseCase getUserListUseCase 这个应该是从usermodule 里面的provide里面拿的。不知道为什么这里用UseCase类。另外,看到这个类的最上面用@perActivity注释了,大概是因为这个类并不是aty,然后又需要同步于Aty的生命周期吧。这里说一下这个RenderView 。首先定义了这么一个借口,然后再presenter里面调用这个接口往里面传递了data.最后在Aty中因为implement了RenderView 这个接口,所以重写了这个方法,那么在presenter里面一调用RenderView.renderView(data).因为这个data,(这个data是真实的数据)那么在Aty中这个Renderview就被调用了,好像类似回调,至于其中的原理,我是一头雾水。也许看完设计模式会知道是什么东西吧。至于这个类下面的

  Loads all users.的方法就不细讲了,就是一个标准的Rxjava写法,得到数据,转换,给了renderview. 

最后讲讲UserListActivity。从上往下说,注入了presenter和adapter这个是理所当然的。initializeInjector()这个方法把userComponent这个类实现了然后通过getComponent().inject(this);把本aty注入到虚拟图中,只有在虚拟图中的类才能接受inject。之后是setRenderview是把这个aty和前面的presenter绑定在了一起的样子。getCallingIntent()这个方法我比较费解,不知道为什么这么写。initData()这里先是把空的数据给了listview。然后调用loadUserList()方法去获得数据。通过Renderview实现回调,最后调用updateDataList(data)方法,大功告成!

这两篇文章只是梳理了一遍这个框架的执行流程,至于其中很多的细节还需要进一步去学习研究。其中提到
的某些疑问,如果有共同学习者为我解答,感激不尽。
 


 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值