那么依赖注入呢。我理解概念(我认为!)和容器的使用。我无法理解的是让DI容器随处可用的最佳方法。
如果您有DB类,是否将容器注入构造函数?那么你可以调用DI容器方法来创建依赖对象吗?
您是否对配置类,邮件程序类,记录器类等执行相同的操作?你如何让DI容器随处可用?
帮助表示感谢!
答案 0 :(得分:3)
类似于CJD所说的,如果你的DIC可以无处不在那么它就更像是Global Registry
对于DB类,如果它的依赖关系是通过提示参数的类型,外部定义,文档或任何其他可接受的方式来传递的,那么DIC可以注入这些依赖关系。
有用的资源:
Anthony Ferra / ircmaxell video on Dependency Injection
Fabian Potencier article about whether you need a DIC
罗布艾伦 video Introducing Dependency Injection Stephan Hochdorfer video The 7 Deadly Sins of Dependency InjectionMartin Fowler:
StackOverflow的:
答案 1 :(得分:1)
我的理解是,你不让它随处可用。您注册所有对象及其依赖项,然后在构造对象时,IoC容器提供其所有依赖项(以及第二级,第三级,第n级依赖项)。
所以foo需要bar,bar需要baz和qux,而qux需要quux。 Foo只需要注入条形图,IoC将负责提供条形图及其依赖项的细节,等等。
如果foo之后需要制作更多的条形图,那么它依赖于条形工厂,而IoC也可以提供它。