> Как реализовать синглтон в Kotlin (Kotlin, Android)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: Бел Интегратор

Стек: Kotlin, Android

> Пример ответа

В Kotlin синглтон реализуется наиболее просто через ключевое слово object. Компилятор сам гарантирует потокобезопасность и ленивую инициализацию при первом обращении:

object MySingleton {
    fun doSomething() {
        println("Singleton method called")
    }
}

Для Android-разработки часто требуется синглтон с параметрами (например, Context). В таких случаях используется companion object с блоком synchronized:

class MySingleton private constructor(private val context: Context) {
    companion object {
        @Volatile
        private var instance: MySingleton? = null

        fun getInstance(context: Context): MySingleton {
            return instance ?: synchronized(this) {
                instance ?: MySingleton(context.applicationContext).also { instance = it }
            }
        }
    }
}

Также можно применить делегат lazy для потокобезопасной инициализации без явной синхронизации:

class MySingleton private constructor() {
    companion object {
        val instance: MySingleton by lazy { MySingleton() }
    }
}

Выбор зависит от потребностей: object - для простых случаев, companion object с синхронизацией - для гибкости с параметрами.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью