2012-01-10 47 views
1

在我正在開發的項目的代碼中,我遇到了一個奇怪的方法。使用靜態方法的服務定位器

public class ServiceManager { 

    public static MailService getMailService() { 
     ... 
    } 

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

由本級「分佈式」的依賴正在使用Spring框架注入到它:

的UI層使用一種服務定位的是靜態方法的類變得依賴條件。

這種方法的原因是什麼?我只能看到缺點。由於定位器方法是靜態的,因此沒有接口。界面的缺失使得難以理解該課程的目的。這個類的客戶端與它緊密相連(記住,那裏沒有接口),使他們無法在其他地方重用。

讓Spring直接在UI類中注入依賴性會好嗎?

回答

2

對於大多數UI框架,在UI類中使用構造函數注入通常非常困難(如果不是不可能的話)。在這種情況下,通常會恢復到服務定位器模式,但僅限於 - 我在UI類中重複只有

+1

+1如果您不控制對象實例化,但需要將您的依賴關係放入該對象中,則沒有任何其他選擇,只能恢復到服務定位器模式。 – 2012-01-10 14:16:39