
- hello 大家好 今天要给大家分享的是自己对依赖注入和控制反转 的理解
- 前面也有小伙伴们提到并做出了详细的讲解 但是自己还是看得有点懵
- 于是就自己去尝试了一遍 会的就略过 如果有说的不对的地方欢迎大家进行指正
- 在大多数面向对象编程的过程中,在调用一个对象时,先要实例化这个类,然后才能调用这个对象。如果在写这个类时,调用了很多其他的类,类与类之间相互“依赖”,这就有了极大的耦合,并且在实例化对象时,可能会实例化许多不必要的对象浪费了资源。
- 为了解决这个问题,可以把所有依赖的对象,都注入到一个容器(IOC容器),这样以后,所有依赖有关的对象都可以从容器直接获取(解析),容器管理者对象的创建与销毁。IOC这个容器它是一个实现了IOC的框架。IOC 是控制反转 ,简单来说,a依赖b,但a不控制b的创建和销毁,仅使用b,那么b的控制权交给a之外处理,这叫控制反转(IOC),而a要依赖b,必然要使用b的instance,那么b注入到a 有如下几种方式:
- 1、通过a的接口,把b传入;
- 2、通过a的构造,把b传入;
- 3、通过设置a的属性,把b传入;
- 这个过程叫依赖注入(DI)。(很奇妙,依赖注入与控制反转相辅相成)
- 举个栗子:
- public class A {
- private B b;
- public A(B b) {
- this.b=b;
- }
- }
- 那么如何去new呢,定义一个类C,在C中调用A的构造方法的时候new B();即
- public class C{
- @Test
- public void Use(){
- A c=new A(new B());
- }
- }
- 这样的话,就实现了一个简单的依赖注入,A类与B类
-
-
-
-
- 每日一笑,今天你笑了吗?
- 1.我是一个苦b的程序员,
- 今晚加班到快通宵了,
- 困得快睁不开眼了,
- 女上司很关心,
- 问我要不要吃宵夜。
- 我没好气地说,
- 宵夜就算了,
- 能让我睡一觉就行了。
- 女上司红着脸说了句讨厌啊,
- 然后坐在我身边不动,好像距离我很近,
- 搞得我很紧张,难道她发现我的程序出了bug?
-
- 2.搞IT太辛苦了,想换行怎么办?”
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- “敲一下Enter键。”
-
-
-
- 美好的时光总是短暂的
- 本期就到这里了喜欢的话点过关注吧
- 我是小付 下期见!
评价