2016-01-20 90 views
0

在我的程序中,我有一個菜單系統,其中每個菜單都有一個單獨的類,例如MainMenu將是一個單獨的類。但是這個類只應該被實例化一次,並且在我實例化之後,它被保存在一個所有被用於之後的列表中。我應該使用另一個解決方案而不是單獨的課程嗎或者我應該讓構造函數是私有的,然後在類中創建一個私有實例?我覺得這違反了OOP,但我沒有看到另一種解決方案。java中單實例類的最佳實踐是什麼?

+0

[這是一篇相關文章](http://stackoverflow.com/questions/70689/what-is-an-efficient-way-to-implement-a-singleton-pattern-in-java)。 – resueman

回答

4

不要將構造函數設爲私有,這會在您稍後想要對其進行單元測試時造成問題。

只是實例化一次。沒有軟件恐怖分子多次祕密實例化你的課堂。 避免Singeltons,你以後在試圖單元測試時幾乎不能重置實例。

+1

我每天都和軟件恐怖分子打交道。我們稱他們爲「同事」。讓一個班級成爲一個單身人士將比「不要直接實例化!」更有效地阻止濫用。註釋。 – Andreas

+0

軟件恐怖分子勝利! (對不起,讓我想起Counterstrike) – enderland

+0

可能,更好的解決方案是讓InzaneNova查看注入框架。也許春天。 – Andreas