2011-07-06 19 views
1

這可能是初級的,但我有解決它的問題。
我有一個單身人士,並在每一個方法調用我發送一個對象。同一個。java - 如何初始化數據只有一個singletone?

,所以它看起來是這樣的:

mySingletone.getInstance.doSomethingXXX(MyObj) 
    mySingletone.getInstance.doSomethingYYY(MyObj) 

現在,我想停止發送它,並把它放在裏面singletone。
我有幾個可選的解決方案 -
1.在第一次 - getinstance調用後立即設置。
非常糟糕 - 因爲我不確定何時第一次。
2.我可以刪除singletone的實現並將它們發送給公共ctor--但我不確定它只會創建一次。

有沒有辦法只啓動一個singletone一次?

+0

可能重複http://stackoverflow.com/questions/1879283/different -ways到寫單式-JAVA) –

回答

0

如果您的Singleton類需要使用不同的MYObj做什麼,那麼您應該繼續做你正在做的事情。
如果Singleton應該總是使用MyObj的相同實例(我認爲這就是你要求的),你可以在你的Singleton中創建它的一個實例(這會更好,因爲它會被客戶端封裝/隱藏(你甚至可以封裝這個類裏面的MyObj中類)
例如:

public class MySingleton { 
    private static MySingleton _instance = new MySingleton(); 

    private MyObj _myObj = new MyObj(); 
    private MySingleton() { 
     //set more stuff into _myObj if necessary 
    } 
/* 
    //similarly you can replace the above 4 lines of code with this code: 
    private MyObj _myObj; 
    private MySingleton() { 
     _myObj = new MyObj(); 
     //set more stuff into _myObj if necessary 
    } 
*/ 

    private static MySingleton getInstance() { return _instance; } 

    //other methods of the class use _myObj 
    // ... 
    //could even define MyObj class nested in this class 
} 
的[不同的方式來寫單用Java(