2012-01-03 65 views
0

它是重載實例函數以接受參數的最佳方式,在以下代碼片段中,我正在傳遞日誌文件的文件名。這樣做很好嗎?重載Singleton類的實例函數

Logger.GetIntance(「Temp.log」);

Logger.GetIntance()。WriteLog(「Program Start」);

有沒有更好的方法來實現相同的目標?

+0

我不說這是個好主意。我從來沒有見過這種方法。如果你有一個「SetFileName」函數或什麼的,會不會更好? – 2012-01-03 11:53:07

回答

1

getInstance()不是實例方法。這是一種靜態方法。如果Logger是單身人士,那麼您無法在邏輯上有兩種不同的方法來獲得同一個實例。

如果您需要初始化單身人士,那麼請在課程中自己做。無論如何,它只會在一個地方初始化,所以最好在裏面。

但是記錄器很少單身,Logger.getInstance(..)通常會返回一個新的實例。所以超載它是很好的。

+0

你能告訴我爲什麼我不能有兩種不同的方法來獲得相同的實例嗎? – logeeks 2012-01-03 12:24:14

0

如果你想遵循設計模式,那麼我建議你在類中用文件名初始化記錄器。如果在這段時間內文件名是不知道的(它會改變),那麼你是否需要擁有一個singleton是有問題的。