建立型模式 單例模式

2021-10-25 10:30:08 字數 1058 閱讀 7230

指乙個類只有乙個例項,且該類能自行建立這個例項的一種模式

例如,windows 中只能開啟乙個任務管理器,這樣可以避免因開啟多個任務管理器視窗而造成記憶體資源的浪費,或出現各個視窗顯示內容的不一致等錯誤

單例類只有乙個例項物件

該單例物件必須由單例類自行建立

單例類對外提供乙個訪問該單例的全域性訪問點

單例模式可以保證記憶體裡只有乙個例項,減少了記憶體的開銷

可以避免對資源的多重占用

單例模式設定全域性訪問點,可以優化和共享資源的訪問

單例模式一般沒有介面,擴充套件困難。如果要擴充套件,則除了修改原來的**,沒有第二種途徑,違背開閉原則。

在併發測試中,單例模式不利於**除錯。在除錯過程中,如果單例中的**沒有執行完,也不能模擬生成乙個新的物件。

單例模式的功能**通常寫在乙個類中,如果功能設計不合理,則很容易違背單一職責原則。

執行緒不安全

對getinstance方法使用synchronize關鍵字

使用雙檢鎖,安全且在多執行緒情況下能保持高效能。

登記式/靜態內部類,能達到雙檢鎖方式一樣的功效,但實現更簡單。

列舉,這種實現方式還沒有被廣泛採用,但這是實現單例模式的最佳方法。它更簡潔,自動支援序列化機制,絕對防止多次例項化。

建立型模式 單例模式

餓漢式 package com.hfview.designmode.signle 1.餓漢式 就是在初始化成員變數的時候就獲取例項物件 2.public class signlemode private signlemode 懶漢式 package com.hfview.designmode.sig...

建立型模式 單例模式

概述 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。適用性 當類只能有乙個事例而且客戶可以從乙個眾所周知的訪問點訪問它時。當這個唯一事例應該是通過子類化可擴充套件的,並且客戶應該無需更改 就能使用乙個擴充套件的例項時。參與者 singleton 定義乙個instance操作,允許客戶訪問它...

建立型模式 單例模式

1.乙個類只能建立乙個物件 2.應用 主要應用與資料庫應用,可以避免大量的new操作消耗資源 3.uml類圖 user 何曉巨集 date 2018 9 27 time 15 48 namespace singleton class singleton 判斷 instance是否為空,為空則新建乙個...