在這里插入圖片描述# go設計模式之單例模式
在軟件開發時,經常會遇到有些對象需要保證只有一個實例的,那么這種設計模式就應用而生。
定義
單例模式,也叫單子模式,是一種常用的軟件設計模式,屬于創建型模式的一種。在應用這個模式時,單例對象的類必須保證只有一個實例存在。許多時候整個系統只需要擁有一個的全局對象,這樣有利于我們協調系統整體的行為。比如在某個服務器程序中,該服務器的配置信息存放在一個文件中,這些配置數據由一個單例對象統一讀取,然后服務進程中的其他對象再通過這個單例對象獲取這些配置信息。這種方式簡化了在復雜環境下的配置管理。
作用
如果是一款大型軟件,或者比較復雜的數據結構,在優化的時候往往會考慮內存的占用情況,實例的多少就會影響著系統的性能,因為需要的內存越多,突發情況下的內存使用狀態我們就不好掌控,所以如果你想控制實例數目,并且節省系統資源。
單例模式分類
一般單例模式分為以下幾種:
- 線程不安全的懶漢式
- 線程安全的懶漢式
- 餓漢式
- 雙檢鎖/雙重校驗鎖(DCL,即 double-checked locking)
還有一些分類,這里就不重點講了。
下面大致講一下它們的特點。
所謂 懶漢式 就是延遲初始化,在使用的時候才初始化就是懶漢式,有線程安全版本