服务定位器方法什么时候变得更受欢迎?

时间:2013-01-26 19:19:41

标签: design-patterns factory-pattern

要实现控制反转,可以使用服务定位器或依赖注入器。服务定位器可能比DI更难或更长。 我认为服务定位器就像Factory模式的另一个名称,对吧?而且我不知道何时必须使用SL代替DI?你有任何实际案例可以适用吗?

2 个答案:

答案 0 :(得分:1)

作为默认位置,请避免使用ServiceLocators。请参阅Mark Seemann关于此主题的excellent blog post

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

答案 1 :(得分:0)

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

通常,工厂模式将创建服务的新实例,调用者将成为实例的所有者。

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