已經是asked單身課程和靜態課程有什麼區別。但是,瞭解其中的差異,每次我需要選擇時,我仍然感到困惑。單身和靜態課程案例研究
所以對於我自己我定義了兩種不同的情況 - 如果應該只有這個類的一個實例(這是很少的)和所有服務類的靜態類,我使用POJO類(在java中)主要是singletones這經常發生)。
例如,在我的應用程序中,我需要存儲消息(我有一個可序列化的類消息),將它們寫入文件,從文件中讀取並在運行時訪問。我沒有看到有任何理由在這裏使用單例,靜態類只是沒關係。唯一的靜態類是MessageStorage,它有3個函數 - 讀,寫和getMessages,還有一個靜態的私有數組列表。
這種方法是否合理?如果不是,它的問題是什麼?
全局狀態/靜態通常被認爲是不好的形式,這就是爲什麼單例經常被認爲是[反模式](http://en.wikipedia.org/wiki/Singleton_pattern#Drawbacks)。 「好的做法」是靜態類和單例只能用於沒有狀態的輔助方法(例如'Math.sqrt(4)')。 – Bringer128 2011-12-19 03:19:56
所以在這種情況下,你會怎麼做? – Sergey 2011-12-19 03:21:49
在你需要存儲狀態的情況下,你只需要一個對象的引用。它不能由singleton模式保證,而是在任何需要這些信息的全局可達的位置。它會達到同樣的效果,但正如我在我的文章中所說的,差異在於可擴展性和可變性隨着需求的變化而改善。一旦創建一個類實現了singelton的目標,你需要做的就是在全球可以找到的地方引用它。 – Dessus 2011-12-19 04:12:49