依赖注入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了依赖注入相关的知识,希望对你有一定的参考价值。

依赖注入是面向对象编程很重要的思想,是实现解耦很重要的一种手段。

依赖注入是指a依赖于b,a不直接在内部实例化b,而是通过注入的方式,也就是构建和使用分离。与之相关的思想是,面向接口编程,而不要面向实现编程。

依赖注入一般需要面向对象语言,或者可以用一定方式实现面向对象的语言(比如lua可以利用元表实现类和继承,js或者ts也有类和对象的概念)。为啥需要面向对象语言呢?因为依赖注入需要面向接口编程,这需要语言支持派生和多态。

依赖注入的形式主要有3种:1.构造函数注入(Constructor Injection)。2.接口注入。例如setMethod方法(Setter Injection)。3.设值方法(Setter Injection)。其实2和3是属于同一种方法。

应用:在23种设计模式当中,装饰者模式也有运用类似依赖注入的思想(但每个装饰者之间其实应该没有依赖关系?),每个装饰者在装饰自己之前,先装饰通过构造函数注入的前一个装饰者需要装饰的东西。类似的,策略模式也算是运用了依赖注入的思想。最近在看puremvc,感觉它里面的很多实现也都是依赖注入的思想。

其他:与依赖注入思想比较类似的是服务器定位器模式,它的思想是a依赖于b,a不直接在内部实例化b,而是通过服务器定位器获得b的实例。这实际上还是依赖注入的思想,只不过换了一种实现方式。

以上是关于依赖注入的主要内容,如果未能解决你的问题,请参考以下文章

依赖注入 ---- 系列文章

依赖注入

PHP如何实现依赖注入

依赖注入是怎么回事

Spring的依赖注入

依赖注入究竟有啥好处?