亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于設計模式:我應該什么時候使用單例?

關于設計模式:我應該什么時候使用單例?

HUH函數 2019-06-19 15:26:26
關于設計模式:我應該什么時候使用單例?被美化的全局變量-變成了一個光榮的全局類。有人說打破面向對象的設計。給我一些場景,除了好的舊記錄器,在這里使用單例是有意義的。
查看完整描述

3 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

在我尋求真相的過程中,我發現使用Singleton的理由實際上很少。

Internet上一次又一次出現的原因之一是“日志”類(您提到過)。在這種情況下,可以使用Singleton來代替類的單個實例,因為項目中的每個類通常都需要反復使用日志類。如果每個類都使用此日志類,則依賴項注入將變得非常麻煩。

日志記錄是“可接受的”Singleton的一個具體示例,因為它不影響代碼的執行。禁用日志記錄,代碼執行保持不變。啟用它,同樣的。Misko把它放在下面的方式單身的根本原因“這里的信息有一種方式:從應用程序到記錄器。即使記錄器是全局狀態,因為沒有從記錄器流向應用程序的信息,記錄器也是可以接受的?!?/trans>

我相信還有其他合理的理由。亞歷克斯·米勒,在“我討厭的模式,談到服務定位器和客戶端UI也可能是“可接受的”選擇。

在辛格爾頓讀更多我愛你但你讓我失望了。


查看完整回答
反對 回復 2019-06-19
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

單身候選人必須滿足三項要求:

  • 控制對共享資源的并發訪問。
  • 將從系統的多個不同部分請求對資源的訪問。
  • 只有一個物體。

如果建議的Singleton只有一兩個這樣的需求,那么重新設計幾乎總是正確的選擇。

例如,不可能從多個地方(打印菜單)調用打印機假脫機程序,因此可以使用互斥來解決并發訪問問題。

一個簡單的記錄器是一個可能有效的Singleton的最明顯的例子,但是這可以隨著更復雜的日志記錄方案而改變。


查看完整回答
反對 回復 2019-06-19
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

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

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


查看完整回答
反對 回復 2019-06-19
  • 3 回答
  • 0 關注
  • 1067 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號