服务定位器使用静态方法

时间:2012-01-10 13:22:07

标签: dependency-injection dependencies

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

UI层使用一种Service Locator获取依赖关系,Service Locator是一个具有静态方法的类:

public class ServiceManager {

    public static MailService getMailService() {
        ...
    }

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

使用Spring框架将由此类“分发”的依赖项注入其中。

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

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

1 个答案:

答案 0 :(得分:2)

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