依赖注入和控制反转这2个概念差不多。
还有一些相关的概念:纯接口、函数注册
架构整洁之道中的经典讲解:
普通代码中,代码依赖方向和控制流方向是一致的,即如果函数A中调用函数B,那么A依赖B,A控制B
而控制反转的代码,是A和B都依赖C,A控制C,C控制B,在B和C之间的关系就是依赖控制反转。
结构化编程中的实现方式:
C中有函数指针变量,把它的值赋值为B的地址,A中通过函数指针调用B
面向对象编程中的实现方式:
依赖注入就是:本来我接受各种参数来构造一个对象,现在只接受一个参数——已经实例化的对象。