mirror of
https://github.com/tmrts/go-patterns.git
synced 2024-11-27 23:46:06 +03:00
551 B
551 B
#Singleton Pattern Singleton creational design pattern restricts the instantiation of a type to a single object.
Implementation
package singleton
type singleton map[string]string
var once sync.Once
var instance *singleton
func New() *singleton {
once.Do(func() {
instance = make(singleton)
})
return instance
}
Usage
s := singleton.New()
s["this"] = "that"
s2 := singleton.New()
// s2["this"] == "that"
Rules of Thumb
- Singleton pattern represents a global state and most of the time reduces testability.