Википедия определяет шаблон Singleton:
В разработке программного обеспечения одноэлементный шаблон - это шаблон проектирования программного обеспечения, который ограничивает создание экземпляра класса одним единственным экземпляром. Это полезно, когда нужен ровно один объект для координации действий в системе.
Термин происходит от математической концепции синглтона.
Общее использование
- Паттерны абстрактная фабрика, строитель и прототип могут использовать синглтоны в своей реализации.
- Фасадные объекты часто бывают одиночными, потому что требуется только один фасадный объект.
- Государственные объекты часто бывают одиночными.
Выполнение
Есть разные способы реализовать шаблон singleton в Go, но также довольно легко ошибиться. Правильный способ реализовать одноэлементный шаблон в Go - использовать функцию Once.Do () пакета синхронизации. Эта функция гарантирует, что указанный вами код выполняется только один раз и никогда более одного раза.
одноэлементный пакет с Once.Do ()
package singleton import ( "sync" ) type singleton struct {} var instance *singleton var once sync.Once func GetInstance() *singleton { once.Do(func() { instance = &singleton{} }) return instance }
Примечание. Я начал реализовывать в golang версию всех известных шаблонов проектирования.
Ссылка на Github Repo: https://github.com/gauravtayal0/go-designpattern.