設計模式-單列模式

單列模式

Ensure a class has only one instance, and provide a global point of access to it.(確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例。)

線程不安全

懶漢模式

懶漢模式存在線程安全問題在低併發的情況下尚不會出現問題,若系統壓力增大,併發量增加時則可能在內存中出現多個實例,破壞了最初的預期。

線程安全

餓漢模式

首先go中沒有構造函數的概念,可以利用包的特性,在包被import的時候,會自動執行init的特性,進行實例化操作。當程序中用不到該對象時,浪費了一部分空間

和懶漢模式相比,更安全,但是會減慢程序啓動速度

鎖機制

線程安全問題,一般我們使用互斥鎖來解決有可能出現的數據不一致問題。

sync.Once是golang標準包中給我們提供了相關的方法,請求實例加鎖,原子操作只會在首次加鎖,後面會直接取單列。

參考文:https://juejin.im/post/5bdbd074e51d450549408fa8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章