之前面试一些公司会问我对依赖注入、控制反转的理解。这里我就浅谈下自己的理解。
什么是依赖注入,依赖注入就是接口注入,接口定义了方法(传入参数类型,返回值类型),实际就是方法的抽象。一个接口也就是一组(一个或者多个)同类型方法的抽象。控制反转表示类继承接口、实现接口方法。将接口方法指向具体的方法实现。也就是抽象方法的实现。
以前看过一个纪录片。讲述了人类的起源以及发展。其中有一节讲到智人(也就是我们人类自己)是如何在和其他人种的竞争中胜出的。 那就是智人强大的抽象思维能力,国家就是一个抽象的名词。没有抽象思维智人就无法组织150人以上的部落以至于后来的国家(大脑比较小的智人是如何打败大脑比较大的尼安德特人)。
同样当我们面对一个中型或者大型项目的时候,就需要一个抽象到具体的过程。定义项目功能,定义项目中不同的模块功能(模块解耦)。模块间的交互与聚合。最后才去考虑如何用代码去实现。所以我的对依赖注入、控制反转的理解就是将项目抽象、耦合再到细化、实现的这么一个过程。