設計模式 單例

2021-08-16 01:28:42 字數 1597 閱讀 5917

設計模式-單例

一、單例介紹

1.單例概念

單例模式是一種物件建立模式,它用於產生乙個物件的具體例項,它可以確保系統中乙個類只產生乙個例項

2.好處

對應頻繁使用的物件,可以省略建立物件所花費的時間,這對於那些重量級物件而言,是非常可觀的一筆系統開銷

由於new操作的次數減少,因而對系統記憶體的使用頻率也會降低,這將減輕

gc壓力,縮短

gc停頓時間

二、單例的六種寫法和各自特點

餓漢public class starving

//2.建立類的唯一例項

private static starving instance = new starving();

//提供乙個用於獲取例項的方法

//需要注意的是,我們這個方法屬於物件,不是類方法

//public starving getinstance()

//3.提供乙個用於獲取例項的私有的類的靜態成員方法

public static starving getinstance()

}不足之處:無法對instance例項做延時載入

優化:懶漢

懶漢public class lazy

//2.宣告類的唯一例項

private static lazy instance;

//3.提供乙個用於獲取例項的方法

public static lazy getinstance()

return instance;  }}

不足之處:在多執行緒併發下這樣的實現是無法保證例項是唯一的

優化:懶漢執行緒安全

懶漢執行緒安全

不足之處:使用synchronized導致效能缺陷

優化:dcl

不足之處:jvm的即時編譯器中存在指令重排序的優化(可以使用

volatile

關鍵字)

優化:靜態內部類/列舉

靜態內部類(最佳單例)

優點:jvm本身機制保證了執行緒安全

/沒有效能缺陷

原因:static/final

列舉(最佳單例)

優點:寫法簡單/執行緒安全

三、android中的單例

2.單例模式引起的記憶體洩漏

3.eventbus的坑

單例設計模式(餓漢單例設計模式 懶漢單例設計模式)

1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...

設計模式 單例設計模式

歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...

設計模式 單例設計模式

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...