Sobes.tech
Back to questions
Junior — Middle
63

Каким образом реализовать паттерн Singleton в языке Kotlin и какие особенности при этом необходимо учитывать?

Answer from AI

sobes.tech AI

В Kotlin паттерн Singleton реализуется очень просто с помощью ключевого слова object. Это объявление создаёт класс с единственным экземпляром, который инициализируется лениво и потокобезопасно по умолчанию.

Пример реализации Singleton:

object Database {
    fun query(sql: String) {
        println("Выполняется запрос: $sql")
    }
}

// Использование
Database.query("SELECT * FROM users")

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

  • Не нужно писать код для контроля создания экземпляра — всё сделано автоматически.
  • Инициализация потокобезопасна без дополнительного синхронизирования.
  • Можно реализовать интерфейсы и наследовать от классов.
  • Если нужен ленивый Singleton с параметрами, object не подходит, тогда используют другие подходы (например, by lazy).

Таким образом, в Kotlin Singleton — это просто и безопасно благодаря встроенной поддержке object.