在我正在研究的项目代码中,我遇到了一种奇怪的方法。
UI层使用一种Service Locator获取依赖关系,Service Locator是一个具有静态方法的类:
public class ServiceManager {
public static MailService getMailService() {
...
}
public static UserInfoService getUserInfoService() {
...
}
...
}
使用Spring框架将由此类“分发”的依赖项注入其中。
这种方法可能是什么原因?我只能看到缺点。由于定位器方法是静态的,因此没有接口。缺少界面使得更难以推断出课程的目的。这个类的客户端与它紧密耦合(记住,那里没有接口),使得它们无法在其他地方重用。
让Spring直接在UI类中注入依赖项不是更好吗?
答案 0 :(得分:2)
对于大多数UI框架,在UI类中使用构造函数注入通常非常困难(如果不是不可能的话)。在这种情况下,通常会在UI类中恢复服务定位器模式,但只能重复 。