Container允许我们为类提供所需的依赖关系。如果类是容器已知的,它可以创建任何bean。它是服务定位器的例子吗?IOC容器是服务定位器模式的示例吗?
2
A
回答
1
不,DI Container本身不是服务定位器,但它可以像一个一样使用。这完全取决于它的用途。
只要你使用容器内的Composition Root,它是一个not服务定位器。但是,一旦使用容器以外的组合根,调用容器(或其上的抽象)就成为Service Locator anti-pattern的一种形式。
2
这Martin Fowler的article提到了两者之间的区别:
两个模式之间的重要区别是关于实现是如何提供给应用程序类。使用服务定位器,应用程序类会通过消息向定位器明确要求。通过注入没有明确的请求,服务出现在应用程序类中 - 因此控制反转。
相关问题
- 1. IoC容器的示例
- 2. 从galasoft与MEF和IOC容器定制服务定位器
- 3. 使用IoC容器作为HttpHandler的服务定位器
- 4. 混淆了使用IOC容器,服务定位器和工厂
- 5. 服务定位器/ IOC在ASP.Net环境
- 6. Swift中的服务定位器模式
- 7. 为什么服务定位器在以下示例中是反模式?
- 8. 使用服务定位器向服务提供容器实例是错误的吗?
- 9. 关于服务定位器模式
- 10. 通过IoC容器实现WCF服务
- 11. 服务容器或IoC for WinForms建议
- 12. 验证我了解IoC,Ioc容器,DI和服务定位器之间的区别
- 13. IoC容器。注入容器
- 14. Laravel:绑定到IoC容器
- 15. Biztalk IOC容器
- 16. C#IoC容器
- 17. IOC/Autofac容器
- 18. IoC容器应该解析OR映射器容器吗?
- 19. KendoUI网格服务器绑定示例
- 20. IoC容器 - 注册实例组件
- 21. IoC容器 - 单例还是绕过实例?
- 22. IoC容器不应该处理业务逻辑单例的序列化吗?
- 23. Swarm模式将在Azure容器服务上得到支持吗?
- 24. LightInject IoC容器中的ObjectFactory.GetInstance模拟
- 25. FinalBuilder服务器+ FastMM4示例
- 26. Zend Soap服务器示例
- 27. 服务定位器未设置fubuMVC HelloWorld示例
- 28. SQL服务器 - 从特定的模式
- 29. 便携式类库的IoC容器
- 30. IoC容器配置
您使用的引用来自“Service Locator vs Dependency Injection”。所以引用描述了依赖注入和服务位置之间的区别,但是这并没有回答这个问题。问题是关于* Container *;一个可以执行依赖注入*和*服务位置的工具。 – Steven