依赖注入框架Dagger2从入门到放弃
现在Dagger2在项目里用的越来越多了,最近花了些时间学习了一下Dagger2,这篇文章主要帮助理解Dagger2的注入实现过程,如有错误,还请指正! 我是看着这位哥们的教程入门的 什么是Dagger2Dagger2是Dagger的升级版,是一个依赖注入框架,现在由Google接手维护。 恩,这里有个关键字依赖注入,因此我们得先知道什么是依赖注入,才能更好的理解Dagger2。 依赖注入是面向对象编程的一种设计模式,其目的是为了降低程序耦合,这个耦合就是类之间的依赖引起的。 举个例子:我们在写面向对象程序时,往往会用到组合,即在一个类中引用另一个类,从而可以调用引用的类的方法完成某些功能,就像下面这样. public class ClassA {
...
ClassB b;
...
public ClassA() {
b = new ClassB();
}
public void do() {
...
b.doSomething();
...
}
}
这个时候就产生了依赖问题,ClassA依赖于ClassB,必须借助ClassB的方法,才能完成一些功能。这样看好像并没有什么问题,但是我们在ClassA的构造方法里面直接创建了ClassB的实例,问题就出现在这,在ClassA里直接创建ClassB实例,违背了单一职责原则,ClassB实例的创建不应由ClassA来完成;其次耦合度增加,扩展性差,如果我们想在实例化ClassB的时候传入参数,那么不得不改动ClassA的构造方法,不符合开闭原则。 因此我们需要一种注入方式,将依赖注入到宿主类(或者叫目标类)中,从而解决上面所述的问题。依赖注入有一下几种方式:
在Dagger2中用的就是最后一种注入方式,通过注解的方式,将依赖注入到宿主类中。 如何引入Dagger2
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- C语言strcspn():求字符串互补跨度(长度)
- ruby-on-rails – 如何在单表继承中运行子类的验证?
- ruby-on-rails – Rails 3.0 – 最佳实践:模型对象的多个子
- 当用作函数的返回值时,C#结构是否曾被装箱?
- Cocos2d-X 学习笔记 13 cocos2dx骨骼动画
- ruby-on-rails – Rspec可靠性与路由. (Rails示例RoR教程)
- c# – 如何将Nullable DateTime变量的null值转换为DbNull.V
- 使用ClickOnce从依赖程序集部署内容文件
- cocos2d-android_02_熟悉基本的类
- Ajax实现将可以编辑的表格与数据库交互