Ответ
Singleton — гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему.
class Singleton private constructor() {
companion object {
@Volatile
private var instance: Singleton? = null
fun getInstance(): Singleton {
return instance ?: synchronized(this) {
instance ?: Singleton().also { instance = it }
}
}
}
}
Использование:
val singleton = Singleton.getInstance()
Плюсы:
- Контроль доступа к единственному экземпляру.
- Ленивая инициализация (экземпляр создаётся только при первом вызове).
Минусы:
- Усложняет тестирование из-за глобального состояния.
- Нарушает принцип единственной ответственности.