關於設計模式:我何時應該使用單身人士? [關閉]

榮耀的全球變量 - 成爲一個榮耀的全球階級。 有人說打破面向對象的設計。 數據庫

給我一些場景,除了好的舊記錄器,使用單例是有意義的。 服務器


#1樓

1 - 對第一個答案的評論: 框架

我不一樣意靜態Logger類。 這對於實現來講是實用的,但它不能替代單元測試。 靜態類不能被測試double替換。 若是你沒有單元測試,你不會在這裏看到問題。 函數

2 - 我儘可能不用手工製做單身人士。 我只是建立一個帶有構造函數的簡單對象,容許我將協做者注入到對象中。 若是我須要一個單例,我會使用依賴的inyection框架(Spring.NET,Unity for .NET,Spring for Java)或其餘。 單元測試


#2樓

當您從數據庫或文件加載配置屬性對象時,它有助於將其做爲單例; 沒有理由繼續從新讀取服務器運行時不會改變的靜態數據。 測試


#3樓

在實現State模式時能夠使用Singleton(以GoF書中顯示的方式)。 這是由於具體的State類沒有本身的狀態,並根據上下文類執行它們的操做。 spa

您還能夠將Abstract Factory設爲單例。 設計


#4樓

管理數據庫的鏈接(或鏈接池)。 對象

我還會用它來檢索和存儲外部配置文件的信息。 資源


#5樓

您須要管理共享資源時使用單例。 例如打印機假脫機程序。 您的應用程序應該只有一個假脫機程序實例,以免對同一資源的請求衝突。

或者數據庫鏈接或文件管理器等。

相關文章
相關標籤/搜索