通俗易懂的依赖注入

8 篇文章 0 订阅
在大多数面向对象编程的过程中,在调用一个对象时,先要实例化这个类,然后才能调用这个对象。如果在写这个类时,调用了很多其他的类,类与类之间相互“依赖”,这就有了极大的耦合,并且在实例化对象时,可能会实例化许多不必要的对象浪费了资源。
为了解决这个问题,可以把所有依赖的对象,都注入到一个容器(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类松散耦合,B可以是一个接口,B中的方法逻辑可以任意修改,而A不用关心B的逻辑。

注:本文参考了知乎回答点击打开链接
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值