dagger2

Dagger是一个依赖注入的框架: 

依赖注入是一种面向对象的编程模式,它的出现是为了降耦合度,所谓耦合就是类之间依赖关系,

所谓降低耦合就是降低类和类之间的依赖关系。

我们之前做的:

一个类的构造函数中通过参数引入另一个类的对象,或者通过set方法设置一个类的对象其实就是使用的依赖注入

mvp+Dagger2:为什么要在MVP模式中使用Dagger2?

在项目中绝大多数的使用都是Dagger结合MVP架构使用的,

注**.在这里说下MVP开发者模式(MVP即model(数据模型),view(视图层),persent(逻辑控制层),model为ui层提供数据,或者保存ui层传下来的数据,view单纯的展示数据,响应用户操作并都转发给persenter来做具体的处理,persenter从model处理数据,运算和转化,最后用view来展示。*MVP仅用于应用的GUI部分,他并不是整个应用的架构方式,一个应用的主要架构应该包括基础组件,业务逻辑层和GUI展示层,而MVP仅是展示层的设计模式,没有固定的实现方式,只要能体现出它的方法就可以算是MVP。

modle与view不能直接通信,presenter 通过协议进行数据传递,阻断了view和model的直接联系,使view和model更加专注于自身的业务逻辑。view由activity,fragment实现的view会包含一个或多个persenter的引用来满足试图的业务逻辑。

MVP优点:1.v和m之间的耦合度降低使其更专注于自身业务逻辑,结构清晰方便维护。2.便于单元测试,3.代码复用率高4.代码框架更适用于快速迭代开发

MVP缺点:试图渲染放在了persenter中,所以试图和persenter的交互会过于频繁,如果试图需要改变那么persenter也需要改变。

因为在MVP中使用是非常典型的降低耦合的使用。在MVP模式中activity持有persenter的引用,同时persenter也持有view的引用,这样便于更新UI界面,这样activity就和persenter仅仅的耦合在一起了,而Dagger2是依赖注入框架就是结耦合的,所以MVP中使用Dagger2也就再好不过了,activity持有了presenter的引用,如果presenter的构造函数发生改变则持有presenter的一方也需要发生改变。

activity中需要presenter,所以在activity中

各个注解的作用:

@inject:程序会将Dagger2会将带有此注释的变量或者构造方法参与到依赖注入当中,Daggere2会实例化这个对象。@injec注解的字段不能定义为私有或者受保护的

@module:带有该注解的类需要对外提供依赖,其实就是提供实例化需要的参数,Dagger2在实例化的过程中发现一些参数,Dagger2就会到该类中寻找带有@provides注解的对应参数

@provides 对外提供需要的参数,一般而言有几个参数就需要有几个带有@provides的方法

@component对 带有该注解的接口或者抽象类起到一个关联桥梁的作用,作用就是将带@inject的方法或对象和带有@module的类型进行关联,只有通过该接口或者抽象类才可以在实例化的时候到带有@module中类中去寻找需要的参数,也就是依赖注入。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 前言### 现在Dagger2在项目中的使用越...
    study_zhxu阅读 8,238评论 3 23
  • 2017.3. 4 星期六 晴 【作息时间】 昨晚睡觉时间11.05,早上起床时间6.20。 【学习】 亲子读经:...
    漳州荣妈阅读 1,504评论 0 1
  • 今天溜达溜达加着的,不着急也不懈怠,九点集合 八点半刚好完成28个目标,剩下的半小时就歇着了… 嗯……自我控制...
    可馨Fineyoga阅读 861评论 3 2

友情链接更多精彩内容