awesome-patterns/creational/singleton.md
2016-05-14 16:14:09 +03:00

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.