您的位置:首页 > 其它

dagger2自己的感悟心得

2018-03-16 10:12 176 查看
dagger2还是很好用的一个框架,最起码让你的代码简洁很多,java是面向对象式变成,dagger是依赖注入对象框架,完美了嘛

写好了,在你的类里你就像大将军,指挥手下做事情就行了嘛,而且对象的生命周期人家也考虑到了,scoap嘛,什么跟随application啊,跟随activity啊,跟随用户自定义啊,大概就这两点嘛
下面直接贴图,所谓的mvp模式加dagger2,分分钟搞定
主要说这个p,
(m是模型,就是请求回来的数据啊,什么玩意的,v就是activity啦,控制嘛,谁在控制你的app,交互啥的?那肯定是acitivity嘛,对吧)
现在我就要在baseactivity里,(基类,是基类),没错,注入一个presennt
这个基类是实现了IView接口,但是人家没实现,
我是abstract对象,我抽象,给我的儿子类去实现
这个mbasepresent对象想都不用想,是去请求网络的,(请求网络方法在BasePresnent里)
请求回来,我就掉baseactivity实现Iview的方法,其实就是调告诉子类嘛,对吧,
老子没实现嘛,当然找儿子孙子了,
说白了,你玩的所有的东西都是baseactivity的,但是结果出来了,人家baseactivity很老好,他会告诉自己的儿子,不会私藏,







下面来看下dagger2如何注入的呢,
这个basepresent对象要造他需要什么东西,这是个问题,看下图
通过自己造个module,然后构造方法 传了个baseactivity(参数)的引用进来,然后提供个造basepresent的方法,把baseactivity的引用给basepresent,那这下basepresent不就嗨了嘛,居然拿到了,基类哎
最好PresentModule就成了会造Basepresent的模型类,可以给别人(component)提供数据了



有了module,还得有人调用啊,那就靠component了,同样也是自己造个



这个里面是不是用到了刚才造的presentmodule这个类,是不是有点明白了
那这个void inject(BaseActivity  baseactivity)是什么鬼呢?
其实刚才你明白了,这会儿也是一样,那我造出来的component 谁用呢?我是不是得指定一个?那就是BaseActivity  baseactivity,在这个类里用,这时候你再返回去看第一张图,是不是就感觉很完美了,
DaggerCommonConponent.
builder().
presentModule(new PresentModule(this)).
build().
inject(this);给了数据
new PresentModule(this)
),也给了绑定关系(在Baseactivity里注入了一个BasePresent对象).是不是很酸爽,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: