依赖倒置、控制反转和依赖注入的区分
依赖倒置(Dependency Inversion Principle)、控制反转(Inversion of Control)和依赖注入(Dependency Injection)从思想来讲是统一的,或者说是类似的,有人也说它们是同一个东西。
但是还是可以做一点区分:
依赖倒置原则 是进行软件设计时考虑遵循的一个原则。具体为:
(1)上层模块不应该依赖于下层模块,它们共同依赖于一个抽象。
(2)抽象不能依赖于具象,具象依赖于抽象。
控制反转是软件运行时体现出来的一个特征:如果对象A运行时依赖于对象B,但A并不去创建B,而是从外界直接取得B。也就是说,一个对象并不是自己去创建它所依赖的其它对象。
依赖注入是控制反转的一种实现手段。如上面的例子,B的取得并不需要A的干涉,而是利用某些框架在通过构造参数或属性设置来实现。