нужен, чтобы скрыть источники данных за интерфейсом. В интерфейсе репозитория используются модели domain. И сам интерфейс принадлежит domain. А имплементация - как раз принадлежит data. И там всякие dao, ретрофит и т.п. (отвечая на 2)
Хм, о вопросе сокрытия реализации я что-то не подумал. Благодарю)
Репозиторий может быть без интерфейса, если нет необходимости подменять реализации. Ещё ни разу не встретил такой необходимости (не участвовал в проектах с большим покрытием тестов, где требовалось бы подменять репозитории)
А интерфейс на уровне датасорса может быть? Допустим есть 3 разных метода получения одинаковых данных. Можно же выделить какой нить IDataSource и сделать 3 реализации его?
А где вы в таком случае держите интерфейс? В data или domain?
У меня нет интерфейса для репозитория, нигде не держу)
интерфейса нет, а репозиторий лежит в data) у нас тоже нет лишних интерфейсов ради интерфейсов)
Тьфу, блин, ошибся. Я про репозиторий)
Репозитории в data -> repositories
Получается, domain знает об имплементации репозитория. Не гуд.
Понял, пасиб)
Да, по книжкам не гуд. На практике большой буст в разработке и никаких неудобств, если знать где применять такое можно, а где не стоит
это какой такой буст? имеется ввиду экономия времени на нажатие alt+enter enter?
Экономия времени на: - Переход между интерфейсами и реализациями - Создании интерфейсов - Мыслетопливе, чтобы разбираться в сложной иерархии
понятно, спасибо за ответ во дураки dependency inversion придумали, не хотят экономить на переходах между интерфейсами и реализациями
dip для других задач нужен
Ну просто для всякой задачи есть своё решение. Для большинства проектов интерфейсами покрывать репозитории не надо. Но есть те, где приходится прибегать к более сложным реализациями
так интерфейс репозитория в domain, а реализация в data - это же классический dependency inversion, не?
DataSource это источник данных (database/network/filesyste) и у одного источника может быть много методов получения данных
классический. Но это же не означает, что его нужно всегда применять
Обсуждают сегодня