关于依赖注入降低了组件间的耦合
来源:3-2 选择练习
慕码人2344042
2019-08-04 12:11:09
老师,能不能举个实际的例子说明一下“依赖注入降低了组件间的耦合”呢?
使用spring,虽然是不用在代码里实例化对象,但是不还是一样的道理吗,为什么就降低了组件间的耦合呢?麻烦解答一下,谢谢!
1回答
同学你好,举个例子:一个人(Java实例,调用者)需要一把斧子(Java实例,被调用者)
在原始社会里,几乎没有社会分工;需要斧子的人(调用者)只能自己去磨一把斧子(被调用者);对应情形为:Java程序里的调用者自己创建被调用者,通常采用new关键字调用构造器创建一个被调用者。
进入工业社会,工厂出现了,斧子不再由普通人完成,而在工厂里被生产出来,此时需要斧子的人(调用者)找到工厂,购买斧子,无须关心斧子的制造过程;对应简单工厂设计模式,调用者只需定位工厂,无须管理被调用者的具体实现。
进入“共产主义”社会,需要斧子的人甚至无须定位工厂,“坐等”社会提供即可;调用者无须关心被调用者的实现,无须理会工厂,等待Spring依赖注入。
传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器和DI依赖注入后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题