什么是依赖注入,为什么要使用呢?
简单通俗的说就是一个类需要另一个类来协助工作,就产生了依赖,所以需要依赖项就要【注入】过来一起协同完成任务。
软件设计原则中有一个依赖倒置原则(DIP)讲的是要依赖于抽象,不要依赖与具体,高层模块不应该依赖于低层模块,而这应该依赖于抽象。简单的说就是为了更好的解耦。而控制反转(loc)就是这样的一个实现思路,这个思路的其中一种实现方式就是依赖注入(DI)。
依赖注入理解
引入依赖注入的目的是为了解耦。说白了就是面向接口编程,通过调用接口的方法,而不是直接实例化对象去调用。
这样做的好处就是如果添加了另一个种实现类,不需要修改之前的代码,只需要修改注入的地方将实现类替换。上面说的通过接口调用方法,实际上还是需要去实例化接口的实现类,只不过不需要我们手动new构造实现类,而是交给如微软的DI、Autofac这些工具去构建实现类。我们只需要告诉它们,某个类是某个接口的实现类,当用到的时候,工具(比如,微软的DI)会自动通过构造函数实例化类。