1、定義:單例對象的類必須保證隻有一個執行個體存在,全局有唯一接口通路。
2、分類:
懶漢方式:指全局的單例執行個體在第一次被使用時建構。
餓漢方式:指全局的單例執行個體在類裝載時建構。
3、實作:
(1)懶漢方式
缺點:非線程安全。當正在建立時,有線程來通路此時ins = nil就會再建立,單例類就會有多個執行個體了。
(2)餓漢方式
缺點:如果singleton建立初始化比較複雜耗時時,加載時間會延長。
(3)懶漢加鎖
缺點:雖然解決并發的問題,但每次加鎖是要付出代價的
(4)雙重鎖
避免了每次加鎖,提高代碼效率
(5)sync.Once實作