Dependency injection 使用静态方法的服务定位器
在我正在进行的项目代码中,我遇到了一种奇怪的方法 UI层使用一种服务定位器获取依赖关系,该定位器是一个具有静态方法的类:Dependency injection 使用静态方法的服务定位器,dependency-injection,dependencies,Dependency Injection,Dependencies,在我正在进行的项目代码中,我遇到了一种奇怪的方法 UI层使用一种服务定位器获取依赖关系,该定位器是一个具有静态方法的类: public class ServiceManager { public static MailService getMailService() { ... } public static UserInfoService getUserInfoService() { ... } ... } 此类“分
public class ServiceManager {
public static MailService getMailService() {
...
}
public static UserInfoService getUserInfoService() {
...
}
...
}
此类“分布”的依赖项使用Spring框架注入其中
这种做法的原因可能是什么?我只能看到不利的一面。由于定位器方法是静态的,因此没有接口。由于缺少接口,很难对类的用途进行推理。这个类的客户机与它紧密耦合(记住,这里没有接口),使得它们不可能在其他地方重用
让Spring直接在UI类中注入依赖项不是更好吗?对于大多数UI框架,在UI类中使用构造函数注入通常非常困难(如果不是不可能的话)。在这种情况下,恢复到服务定位器模式是很常见的,但在UI类中只有-我重复仅。+1如果您不控制对象实例化,但需要将依赖关系恢复到该对象中,除了恢复到服务定位器模式之外,您没有其他选择。