阅读许多有关这三个成语之间差异的帖子。但更困惑,然后我遇到了这篇文章: http ://martinfowler.com/articles/injection.html
只是想看看我是否做对了。如果我错了,请纠正我。请通知我更正和补充:
IoC- 是将应用程序与其使用的服务实现分离的概念。该应用程序包含对 Iservice 的引用,并且不负责实例化具体服务。
至少有两种方法可以实现:
DI - 具体服务作为 ctor 参数注入/抛出一个 setter/throw 接口注入(后者是什么意思?)
ServiceLocator - 是一个知道应用程序可能需要的所有具体服务的组件。应用程序明确要求定位器提供具体服务。
*IoC 容器实际上是一个控件的工厂(“提供者”)。
我对文章中的“何时更喜欢(1)或(2)”部分感到有些困惑。有人可以用外行的话从他自己的经历中说出来吗?
“服务定位器由于其更直接的行为而略有优势。但是,如果您正在构建要在多个应用程序中使用的类,那么依赖注入是一个更好的选择。”--> 定位器如何更直接?因为它显式地使用方法调用?当有多个应用程序时,使用 DI 有什么好处?