Как реализовать Singleton в Kotlin

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

Ответ

object Singleton {
    fun doSomething() {
        println("Doing something...")
    }
}

В Kotlin Singleton реализуется через ключевое слово object. Это обеспечивает:

  1. Потокобезопасную инициализацию
  2. Ленивую загрузку (инициализируется при первом доступе)
  3. Автоматическую реализацию шаблона Singleton

Доступ к Singleton:

Singleton.doSomething()

Альтернатива с конструктором (если нужна кастомизация):

class Singleton private constructor() {
    companion object {
        @Volatile private var instance: Singleton? = null

        fun getInstance(): Singleton {
            return instance ?: synchronized(this) {
                instance ?: Singleton().also { instance = it }
            }
        }
    }
}