1

要实现控制反转,可以使用服务定位器或依赖注入器。服务定位器的编码可能比 DI 更难或更长。我认为服务定位器就像工厂模式的另一个名称,对吧?而且我不知道什么时候必须使用 SL 而不是 DI ?您是否有任何实际案例可以应用其中任何一个?

4

2 回答 2

1

作为默认位置,避免使用 ServiceLocators。请参阅 Mark Seemann 关于该主题的出色博客文章

依赖注入更容易维护,并且根本不需要“注入器”或 DI 框架。这只是一个问题或为对象提供它的依赖项(最好在构造函数中),而不是让对象自己收集它们。我是一个非常严格的 DI 拥护者,而且我几乎从不使用 DI 框架。

于 2013-01-26T19:30:08.710 回答
0

我认为 SL 和工厂模式之间存在细微差别。

一般来说,工厂模式会创建一个新的服务实例,调用者成为该实例的所有者。

另一方面,服务定位器将提供服务的预先存在的实例。调用者不会成为此实例的“所有者”。这种预先存在的实例通常在所有客户端之间共享。大多数情况下,实例化预先存在的实例的责任留给了一些第三方代码。

于 2013-01-26T19:30:35.840 回答