golang設計模式 單例模式

2021-10-09 22:07:06 字數 707 閱讀 3643

單例

golang中實現單例模式非常簡單,那就是使用指標物件。

根據物件的例項化時間,可以分為餓漢式和懶漢式。

物件

type person struct

併發測試

func

main()

()} wg.

wait()

}

餓漢式

直接建立好物件,這樣不需要判斷為空,同時也是執行緒安全。唯一的缺點是在匯入包的同時會建立該物件,並持續占有在記憶體中。

1、直接呼叫

var ps =

&person

2、間接呼叫

var ps =

&person

func

getinstance()

*person

懶漢式

物件只有在呼叫getinstance方法的時候才會例項化,節省資源。

var ps *person

var once sync.once

func

getinstance()

*person })

return ps

}

如果不加once,那麼每次呼叫getinstance都會給ps賦值不同的物件。

golang設計模式之單例模式

保證乙個類只有乙個例項,並且提供乙個訪問該例項的全域性訪問點 由於單例模式只生成乙個例項,減少系統效能開銷,當乙個物件的生產需要比較多資源時,就可以通過在應用啟動的時候直接產生乙個單例物件,然後永久駐留記憶體,例如日誌模組 單例模式可以在系統設定全域性訪問點,優化資源共享問題,比如資料庫裡連線池 餓...

Golang單例模式

單例物件的類必須保證只有乙個例項存在,全域性有唯一介面訪問。懶漢方式 指全域性的單例例項在第一次被使用時構建。餓漢方式 指全域性的單例例項在類裝載時構建。type singleton struct var ins singleton func getins singleton return ins ...

golang單例模式

單例物件的類必須保證只有乙個例項存在,全域性有唯一介面訪問。type singleton struct var ins singleton func getins singleton return ins 缺點 非執行緒安全。當正在建立時,有執行緒來訪問此時ins nil就會再建立,單例類就會有多個...