一)golang的單例模式
在23種設計模式中,單例模式作為最普遍運用的設計模式之一,在軟體開發中起著非常重要的地位。
應用場景:對資源單一且有嚴格控制的場景,例如. 資料庫連線類
物件:可一次建立,一直使用的類
在golang中的單例模式實現方式有多種,但需要效率的實現主要還是依賴於sync/Once 實現,其實現原理主要是依賴於sync/atomic 包的原子操作原始碼如下
type Once struct { mMutex done uint32 } func (o *Once) Do(f func()) { if atomic.LoadUint32(&o.done) == 1 { return } // Slow-path. o.m.Lock() defer o.m.Unlock() if o.done == 0 { defer atomic.StoreUint32(&o.done, 1) f() } }