【问题标题】:Service Locator using static methods使用静态方法的服务定位器
【发布时间】:2012-01-10 13:22:06
【问题描述】:

在我正在处理的项目代码中,我遇到了一种奇怪的方法。

UI 层使用一种 Service Locator 获取依赖项,该服务定位器是一个具有静态方法的类:

public class ServiceManager {

    public static MailService getMailService() {
        ...
    }

    public static UserInfoService getUserInfoService() {
        ...
    }
    ...
}

这个类“分发”的依赖是使用 Spring 框架注入到它的。

采用这种方法的原因可能是什么?我只能看到缺点。由于定位器方法是静态的,因此没有接口。没有接口使得推理类的目的变得更加困难。这个类的客户端与它紧密耦合(记住,那里没有接口),使得它们无法在其他地方重用。

让Spring直接在UI类中注入依赖不是更好吗?

【问题讨论】:

    标签: dependency-injection dependencies


    【解决方案1】:

    对于大多数 UI 框架,在 UI 类中使用构造函数注入通常非常困难(如果不是不可能的话)。在这种情况下,通常会恢复到服务定位器模式,但只有 -I 重复 only- 在 UI 类中。

    【讨论】:

    • +1 如果您不控制对象实例化,但需要将您的依赖项放入该对象中,您别无选择,只能恢复到服务定位器模式。
    猜你喜欢
    • 2015-10-08
    • 2015-12-03
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2012-03-01
    • 2019-06-29
    相关资源
    最近更新 更多