design-patterns - 什么是依赖注入(inject)?

标签 design-patterns language-agnostic dependency-injection terminology

已经发布了几个关于 dependency injection 的具体问题。 ,例如何时使用它以及有哪些框架。然而,

什么是依赖注入(inject)以及何时/为何应该或不应该使用它?

最佳答案

到目前为止我找到的最好的定义是 one by James Shore :

"Dependency Injection" is a 25-dollar term for a 5-cent concept. [...] Dependency injection means giving an object its instance variables. [...].

an article by Martin Fowler这可能也很有用。

依赖注入(inject)基本上是提供对象所需的对象(其依赖项),而不是让它自己构造它们。这是一种非常有用的测试技术,因为它允许模拟或删除依赖项。

可以通过多种方式将依赖项注入(inject)到对象中(例如构造函数注入(inject)或 setter 注入(inject))。人们甚至可以使用专门的依赖注入(inject)框架(例如 Spring)来做到这一点,但它们当然不是必需的。您不需要这些框架来进行依赖项注入(inject)。显式实例化和传递对象(依赖项)与框架注入(inject)一样好。

关于design-patterns - 什么是依赖注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/130794/

相关文章:

design-patterns - 数据映射器和关系:实现策略?

CoW、继承类和可变共享数据的 c++ 设计模式?

language-agnostic - 为什么高级语言中缺少这么多数据结构?

python - 重写依赖提供者是否被认为是不好的做法?

java - 使用模式在 Jasper Reports 中格式化货币

java - 模式 "Visitor"还是动态转换?

design-patterns - "controller"和 "gui"之间的循环依赖

iphone - 应用程序本地化的前 5 种语言是什么?

grails - Grails 中的邮件插件

php - 所有需要连接到 mysql 的请求都非常非常慢(使用 Phalcon)