2009-01-21 94 views
1

我知道這應該是簡單的,我應該知道它,但它暫時躲過我。課程訪問問題

我正在使用單例模式來幫助記錄日誌內容。但是,日誌記錄只發生在一個類中,而單例基本上是一個用於打開和關閉日誌文件的布爾值的觀察器。因爲我不希望該文件被多次打開,或者不止一次關閉,所以我使用了單例模式。然而,我不希望它成爲一個全球價值,並且我確定它不想要其他類,即使在包中也可以訪問它。我怎樣才能做到這一點,只有這一類使用它?

回答

3

使其成爲您希望使用它的課程中的私人課程。另外,考慮將其設爲靜態類。

+0

我把它變成了一個私人內部類 – Malfist 2009-01-21 19:54:13

2

如果你不想讓它被其他類訪問,爲什麼它是一個單身人士呢?只要把它變成一個私人的,實例化的類並保留對它的引用即可。

0

使記錄到文件的類成爲單例類,或使其成爲單例類中的變量。布爾字段應該是你的單例的私有字段,沒有人能夠以這種方式訪問​​它。

0

一個更多的左場 - 解決方案可能是採用記錄器中的狀態模式。當設置日誌記錄標誌時,實現將跳轉到打開文件並記錄的日誌標誌。當它被重置時,那麼實現會跳到一個關閉文件並且不記錄的文件。設置和重新設置不再是布爾標誌,而是一種進行狀態改變的方法。