Как стать автором
Обновить

Комментарии 5

Так Кодеин тоже SL


val kodein = Kodein {
    bind<Dice>() with provider { RandomDice(0, 5) }
    bind<DataSource>() with singleton { SqliteDS.open("path/to/file") }
}

class Controller(private kodein: Kodein) {
    private val ds: DataSource by kodein.instance()
}

Для мелких проектов сервислокаторы может и ок, но потом всё становится хуже

Я ориентируюсь на эту статью , где есть цитата автора библиотеки что это больше DI.

Я тоже считаю, что это не DI фреймворк. Зависимости явно достаются из сервис локатора.
Да и Jake Wharton иного мнения: https://www.reddit.com/r/androiddev/comments/75g2fm/opinions_on_kodein/do61qrq/

А чем сервис локаторы становятся хуже с ростом проекта. В окружающей жизни чем больше город, тем сервис локаторы все больше и изощреннее. И наоборот DI сходят на нет
Dagger тоже ведёт себя как ServiceLocator в Activity. Но слышал, что планируют дать доступ к её конструктору.
А по поводу кодеина, просто в конструктор нужно сами зависимости передавать а не объект кодеина. Ни кто ведь дагеровский компонент в конструктор презентера не передаёт же.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории