依赖注入-控制反转(IOC)的好处是什么?

之前只是知道Spring的精髓是依赖注入,控制反转,也只是知道这些名词而已,没有理解到精髓,今天看了知乎的一篇文章茅塞顿开,建议跟我一样迷茫的都看下:

https://www.zhihu.com/question/23277575

这篇是读后感,对自己的理解再做个总结吧

正依赖

依赖反转,从字面理解就是把依赖倒过来了呗,那原来依赖正着的时候是啥样的呢?

正着的时候是上层建筑依赖下层建筑,依赖方式是在自己构造的时候把下层先构造好,比如BirdWing

public class Bird {
    Wing wing;

    public Bird() {
        wing = new Wing();
    }
}

class Wing {
}

Main方法:Bird bird = new Bird();

这就是典型的上层依赖下层(为了更方便理解,可以直接把依赖理解为依赖构造函数),这样的坏处是如果下层的构造函数改了,增减了参数,那上层的构造函数也得加上类似的参数,那如果上层还有上层呢?就要一层一层加上去(如果这里不理解的话建议戳上面的链接看知乎原文,答主说的肥肠清晰)。唯一的好处是Main方法倒是很简洁。

依赖反转

这里按照上面的理解(为了更方便理解,可以直接把依赖理解为依赖构造函数)叫做取消依赖更合适一些,就是上层不再依赖于下层的构造函数,怎么做到的?下层直接构造好,把整个下层当做参数传进来:

public class Bird {
    Wing wing;

    public Bird(Wing w) {
        wing = w;
    }
}

class Wing {
}

Main方法:Wing wing = new Wing(); Bird bird = new Bird(wing);

这样做,如果Wing类构造函数加个参数,只需要改Main方法就行了,坏处是如果建筑层数很多的话,需要从低到高一个一个new,如果用到的地方很多,每次创建一个顶层对象都要这样那真的很麻烦

怎么简化构造代码?

就是把构造的代码封装起来呗,所有地方都调用封装好的方法创建顶层对象
Spring更高级一些,通过注解或配置文件的方式,你连一次都不用自己写,不用知道这个从底层要高层的链路,只需要通过注解或者xml告诉Spring这个类依赖的下层类是什么,下层类自然也有自己的依赖,Spring会自己一层一层地往下找,然后从最底层开始new,直到返回顶层建筑对象

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值