2014-03-18 80 views
1

我有一個單例類。 MsgLog使用單例類實例作爲類級變量是可以接受的嗎?

我可以像下面這樣使用這個類嗎?這有什麼不對嗎?

public class SomeBean { 
    MsgLog log = MsgLog.getInstance(); // IS THIS FINE? 

    // some code 
    private void someMethod() { 
     log.printIt(" test "); 
    } 
} 
+0

還有哪些地方使用了'MsgLog'實例?它的'printIt'方法是做什麼的? – darrengorman

+0

@milkplusvellocet只是記錄器 – Vaandu

+0

這不是很有幫助。如果不知道班級的內部情況,很難就如何使用它提出建議。 – darrengorman

回答

1

是的,這很好。不過你應該可以做到private static final

一般來說,單身人士有問題;對於一個類來說,接受它作爲構造函數參數依賴的東西要比依賴於單例類的類更好。

但很多代碼特別對待日誌記錄,無論好壞。

+0

感謝您的澄清。但我沒有明白爲什麼它應該是私人的?你能澄清一下嗎? – Vaandu

+2

因爲班級以外的任何人都不應該關心這個班級如何進行記錄。 (總是使用限制性最強的訪問;放寬限制比收緊限制更容易。) –

+0

如果另一個類擴展了這個類,那麼保留它可能會很好? – Vaandu