-
46 votesanswersviews
为什么MVC4使用服务定位器反模式?
在阅读了Mark Seemann的"Dependency Injection in .NET"之后,我远离Service Locator,这是一种反模式 . 在阅读the release notes on MVC 4时,我看到: 通过DependencyResolver改进了控制反转(IoC):Web API现在使用MVC依赖解析器实现的服务定位器模式来获取许多不同设施的实例... -
12 votesanswersviews
服务定位器,依赖注入(和容器)和控制反转
我已经编程了一段时间但从未对理解每个概念的含义感兴趣,我可能正在使用各种编程概念,但却不知道它 . Service Locator :对我来说,是指通过减少代码量来加快开发速度的快捷方式记录 . 一个问题是:可能Locator仅引用名称空间/类,或者我可以拥有变量注册表? 以下是我对它的理解: $locator = new ServiceLocator() $locator->set('ap... -
121 votesanswersviews
ServiceLocator是反模式吗?
最近我读了关于Service Locator反模式的Mark Seemann's article . 作者指出ServiceLocator为反模式的两个主要原因: API usage issue (我完全没问题)当类使用服务定位器时,很难看到它的依赖关系,因为在大多数情况下,类只有一个PARAMETERLESS构造函数 . 与ServiceLocator相比,DI方法通过构造函数的参数显式地暴... -
2 votesanswersviews
服务定位器模式 - 如何处理同一服务接口的多个实现
我对 Service Locator 设计模式有点困惑。 关于这种模式似乎是一个非常非常基本的问题,但我无法弄明白:如果我有多个类实现一些 IServiceX 接口怎么办?定位器如何解析我正在寻找的实例? 例如,我可以注册: ServiceA 实现 IServiceX ServiceB 实现 IServiceX 这似乎完全可能,但我不确定。假设我有两种消息传递服务(相同的服务接口),我想在 run... -
3 votesanswersviews
SPI JDK 9 module-info.java
我正在JDK 9上试验SPI . 整个示例适用于没有“module-info.java”的JDK 9 . 添加“module-info.java”后,ServiceLocator没有找到实现类 . 我很困惑,我在模块化JDK 9项目中找不到工作的SPI示例 . 所以我的示例项目如下所示: /spidemo ├── apiModule │ ├── pom.xml │ └── src │ ... -
245 votesanswersviews
依赖注入和服务定位器模式之间有什么区别?
这两种模式看起来都像是控制反转原理的实现 . 也就是说,对象不应该知道如何构造它的依赖关系 . 依赖注入(DI)似乎使用构造函数或setter来“注入”它的依赖项 . Example of using Constructor Injection: //Foo Needs an IBar public class Foo { private IBar bar; public Foo(IBa...