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

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

Ответ

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

Ключевые моменты:

  • Приватный конструктор (чтобы нельзя было создать экземпляр извне).
  • Статический метод для получения экземпляра (обычно getInstance()).
  • Ленивая инициализация (создание при первом вызове).

Пример на Kotlin:

object Singleton // Самый простой способ (использует `object` в Kotlin)

// Или с ленивой инициализацией:
class Singleton private constructor() {
    companion object {
        val instance: Singleton by lazy { Singleton() }
    }
}

Проблемы:

  • Нарушает принцип единственной ответственности.
  • Усложняет тестирование из-за глобального состояния.
  • Потокобезопасность требует дополнительных проверок в Java (в Kotlin object и lazy по умолчанию thread-safe).