Если вам нужен только один экземпляр объекта, вы можете использовать ключевое слово object
в Kotlin. Он реализует шаблон Singleton
:
class App : Application {
val root = Root
}
object Root {
fun createObject(): Any {}
}
Теперь мы можем получить доступ к одному экземпляру класса Root
либо через свойство в классе App
, либо через Root
class: Root.createObject()
ОБНОВЛЕНИЕ:
Чтобы реализовать синглтон, к которому имеет доступ только один конкретный c класс, мы можем использовать интерфейс и скрыть его реализацию в этом c классе ( создатель класс):
interface IRoot {
// ... methods of creation different objects for dependency injection
}
class App : Application {
val root: IRoot = Root
// hide implementation of `IRoot` interface in `App` class
private object Root : IRoot {
// ... implementation of methods of creation different objects for dependency injection
}
}