一、正常依赖对象的创建以及问题

1.我在A类中包含有B类对象、C类对象、D类对象,则正常使用时

public A(B,C,D){
    this.b = b;
    this.c = c;
    this.d = d;
}
//创建A类对象
B b = new B();
C c = new C();
D d = new D();
A a = new A(b,c,d);

2.正常依赖对象的问题
①由于需要创建多个不同的对象,代码量大
②依赖有调整的时候,代码的耦合度比较高,不利于扩展

二、什么是IOC?

1.IOC是一种思想,不是一种技术,他是为了解决正常依赖对象的创建问题而产生的,指导我们如何设计出松耦合、更优良的程序
2.IOC指由Spring来控制对象的生命周期和对象间的关系,举个例子说,我们找女朋友,我们需要找到她的微信、打听她的兴趣爱好、找机会认识他们等。正常创建对象就是类似的过程,我们必须自己设计每个环节,需要的对象,我们需要自己去创建它。而IOC容器类似婚介所,我们就可以将我们的“要求”告诉Spring容器,由它来提供给我们一个mm,整个过程不需要我们控制,我们只需要跟她谈恋爱、结婚就可以了
3.从上面我们可以看出,控制反转了什么?反转了获取依赖对象的方式,正常我们是靠“自己”,现在我们是靠“第三方”

三、什么是DI?

1.DI是IOC的另一种说法或者说实现,他是一种技术,而不是一种思想
2.从上面我们可以知道,IOC思想是反转了获取依赖对象的方式,换句话说,获得依赖对象的过程由自身管理变成了由IOC容器主动注入,Martin Fowler在04年的时候给“控制反转”起了个其他的名字叫“依赖注入”,依赖注入指在IOC容器在运行时,动态地将某种依赖关系注入到对象中
3.它的实现方式是使用反射,因为反射允许运行时动态的生成对象、使用对象的方法、改变对象的属性


原来是小袁呐
1 声望0 粉丝