控制反转(Inversion of Control)
控制反转是希望通过第三方的介入,来对具有依赖关系的对象进行解耦。而在Spring中,是通过IoC容器来作为依赖对象的第三方,对象的控制权都交由IoC容器进行管理,由IoC容器来统一分配、管理其生命周期。(下图本人觉得对控制反转较为清晰的解释)

依赖注入
依赖注入是控制反转的一种实现方式。

上述代码,当我们的car需要wheel时,我们是要car自己new Wheel()对象出来,这样就是所谓的car类对Wheel类存在依赖;若将上述代码改为

上述代码,当我们需要wheel时,并不是由car自己来生成;而是通过传参的方法,给car传一个wheel对象,而car不需要管是怎样生成wheel这个对象,这个就叫依赖注入;这样,car可以不用关心wheel的构造方法是如何实现,这样就降低了类与类之间的耦合度。
感想
通过这个例子,初步地看到一些控制反转的好处,就是当我们修改Wheel的构造方法的时候,而不需要改变Car类中的代码。由于了解有限,所以还未能清楚地说明控制反转的优势
网友评论