Container允许我们为类提供所需的依赖项。如果容器知道类,它可以创建任何bean。它是服务定位器的例子吗?
答案 0 :(得分:2)
这位Martin Fowler article提到了两者之间的区别:
两种模式之间的重要区别在于如何为应用程序类提供该实现。使用服务定位器,应用程序类通过发送给定位器的消息明确地请求它。使用注入没有明确的请求,服务出现在应用程序类中 - 因此控制反转。
答案 1 :(得分:1)
不,DI Container本身不是服务定位器,但它可以像一个一样使用。这完全取决于它的用途。
只要你使用里面的 Composition Root,它就是not服务定位器。但是,一旦您使用外部的组合根,对容器的调用(或对其的抽象)将成为Service Locator anti-pattern的一种形式。