Создание синглетонов с использованием объекта инициализатора VSAndroid

Форум для тех, кто программирует под Android
Anonymous
Создание синглетонов с использованием объекта инициализатора VS

Сообщение Anonymous »

Эйо, я ищу советы. Мне потребовалось некоторое время, чтобы переделать кусок моего кода, чтобы поддержать инъекцию зависимости, и я нашел библиотеку стартапов Androix.startup. Это казалось отличным решением для регистрации в Синглтоне, так как зависимости и порядок инициализации автоматически управляются.

Код: Выделить всё

// Initializes ExampleLogger.
class ExampleLoggerInitializer : Initializer {
override fun create(context: Context): ExampleLogger {
// WorkManager.getInstance() is non-null only after
// WorkManager is initialized.
return ExampleLogger(WorkManager.getInstance(context))
}

override fun dependencies(): List {
// Defines a dependency on WorkManagerInitializer so it can be
// initialized after WorkManager is initialized.
return listOf(WorkManagerInitializer::class.java)
}
}
< /code>
У меня осталось несколько вопросов. Этот код, кажется, строит объект класса. Как это должно работать, если мои синглтоны уже являются объектом 
s, поскольку объект Классы не позволяют конструкторов?

Код: Выделить всё

object ExampleLogger {
lateinit var someProperty : String
fun initialize(wm : WorkManager) {
// do something
// someProperty = wm.GetSomeProperty()
}
}

class ExampleLoggerInitializer : Initializer {
override fun create(context: Context): ExampleLogger {
ExampleLogger.initialize(WorkManager.getInstance(context))
return ExampleLogger
}
Я думаю, мой вопрос:
Это нормально, что функция Create не возвращает новый объект, а просто инициализированный объект? Я думаю, я волнуюсь, что с помощью объекта нет ничего гарантирующего, что инициализация произошла должным образом, и код может по существу получить доступ к неонициализированному объекту.
Есть ли лучший способ справиться с этим?

Подробнее здесь: https://stackoverflow.com/questions/731 ... -vs-object

Вернуться в «Android»