天天看點

golang單例模式

1、定義:單例對象的類必須保證隻有一個執行個體存在,全局有唯一接口通路。

2、分類:  

懶漢方式:指全局的單例執行個體在第一次被使用時建構。

餓漢方式:指全局的單例執行個體在類裝載時建構。

3、實作:

 (1)懶漢方式  

  缺點:非線程安全。當正在建立時,有線程來通路此時ins = nil就會再建立,單例類就會有多個執行個體了。

(2)餓漢方式

  

  缺點:如果singleton建立初始化比較複雜耗時時,加載時間會延長。

(3)懶漢加鎖

  缺點:雖然解決并發的問題,但每次加鎖是要付出代價的

(4)雙重鎖

  避免了每次加鎖,提高代碼效率

(5)sync.Once實作

繼續閱讀