Что такое паттерн Singleton

«Что такое паттерн Singleton» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Singleton — это порождающий паттерн, гарантирующий, что у класса есть только один экземпляр, и предоставляющий глобальную точку доступа к нему. В Go реализуется через sync.Once для потокобезопасности.

package main

import (
    "sync"
)

type Singleton struct {
    value string
}

var (
    instance *Singleton
    once     sync.Once
)

func GetInstance() *Singleton {
    once.Do(func() {
        instance = &Singleton{value: "initial value"}
    })
    return instance
}

Особенности:

  • Гарантирует единственность экземпляра
  • Ленивая инициализация (создание при первом вызове)
  • Потокобезопасность через sync.Once
  • Используется для логгеров, конфигов, подключений к БД