2012-01-25 24 views
-1

我的應用程序中有一些接口,我想創建單例類,它提供了它們的實現。像這樣:如何創建類提供一些接口的實現

public class Singleton{ 
    //singleton's stuff 

    private Interface1 interface1Impl; 
    private Interface2 interface2Impl; 

    public Interface1 getInterface1(){ 
     return interface1Impl; 
    } 

    public Interface2 getInterface2(){ 
     return interface2Impl; 
    } 
} 

我正在尋找 - 提供對應用程序的每個類相同的接口實現。通過這種方式,一切正常,但它是實現這一目標的好方法嗎?

+3

我相信你要找的是抽象工廠模式。 – Zaki

+0

它看起來像一個門面。 –

回答

1

是的,它看起來很像一個工廠(或也許服務定位器更適合您的情況)。

工廠幾乎總是比Singleton更好的主意。例如,一個Factory可以在需要時作爲Singleton工作(延遲初始化,緩存),當需要其他內容時(例如測試,線程安全等),您可以改變這種行爲。

+0

謝謝,工廠正是我要找的。但我有問題 - 工廠的方法應該總是創建實現的新實例,還是可以在構造函數中創建它們(實現)? –

+1

工廠方法可以返回可重用(緩存)的對象:類似於'Integer.fromString('1')''會爲多個調用返回相同的'Integer(1)'對象。您可以進一步抽象出來,並使用[依賴注入](http://en.wikipedia.org/wiki/Dependency_injection),如@Peter所示。工廠在您的代碼之外移動實例的構建。 DI將工廠移出代碼。每個感興趣的類接收一個'Interface1'實現,例如在創作時;這個實例的構建和它的生命週期的控制在DI框架中。 – 9000

相關問題