他们都用于降低耦合度。

依赖反转(Dependency inversion principle, DIP)

在一个有层级结构的软件系统中,低层向高层提供服务,而高层利用低层的接口继续向更高层提供服务,达到了构建复杂系统的目的。在这个过程中,高层的实现依赖于低层,低层决定了高层应该如何实现。

依赖反转让低层也依赖于高层,怎么做到呢?将高层对低层的依赖抽象为接口,低层只需要去实现接口就好了,于是高层与低层都依赖于接口。这么做的好处是高层与低层可以分离,我们可以为系统开发插件或其他需要在低层运行的包。

依赖注入(Dependency Injection, DI)

依赖注入是实现控制反转(Inversion of Control, IoC)的最常用方式。

控制反转的重点是,将对象需要的对象的引用全部传入,但只是使用而不控制这些对象的新建或销毁。传入的方法可以是通过构造函数、设置属性、接口,这是依赖注入的过程。

IOC Container

IOC组件或框架,用于减少重复实现IOC的代码。