TA貢獻1863條經驗 獲得超2個贊
在我尋求真相的過程中,我發現使用Singleton的理由實際上很少。
Internet上一次又一次出現的原因之一是“日志”類(您提到過)。在這種情況下,可以使用Singleton來代替類的單個實例,因為項目中的每個類通常都需要反復使用日志類。如果每個類都使用此日志類,則依賴項注入將變得非常麻煩。
日志記錄是“可接受的”Singleton的一個具體示例,因為它不影響代碼的執行。禁用日志記錄,代碼執行保持不變。啟用它,同樣的。Misko把它放在下面的方式單身的根本原因“這里的信息有一種方式:從應用程序到記錄器。即使記錄器是全局狀態,因為沒有從記錄器流向應用程序的信息,記錄器也是可以接受的?!?/trans>
我相信還有其他合理的理由。亞歷克斯·米勒,在“我討厭的模式,談到服務定位器和客戶端UI也可能是“可接受的”選擇。
在辛格爾頓讀更多我愛你但你讓我失望了。
TA貢獻1777條經驗 獲得超10個贊
單身候選人必須滿足三項要求:
如果建議的Singleton只有一兩個這樣的需求,那么重新設計幾乎總是正確的選擇。
例如,不可能從多個地方(打印菜單)調用打印機假脫機程序,因此可以使用互斥來解決并發訪問問題。
一個簡單的記錄器是一個可能有效的Singleton的最明顯的例子,但是這可以隨著更復雜的日志記錄方案而改變。
TA貢獻1780條經驗 獲得超5個贊
當您需要管理共享資源時,可以使用單例。例如,打印機假脫機程序。您的應用程序應該只有一個假脫機程序實例,以避免對同一資源的沖突請求。
或數據庫連接或文件管理器等。
設計模式深度解析34講
¥ 68.00
舉報
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號