214 похожих чатов

1. Репозиторий без интерфейса? А смысл? Репозиторий как раз и

нужен, чтобы скрыть источники данных за интерфейсом. В интерфейсе репозитория используются модели domain. И сам интерфейс принадлежит domain. А имплементация - как раз принадлежит data. И там всякие dao, ретрофит и т.п. (отвечая на 2)

22 ответов

20 просмотров

Хм, о вопросе сокрытия реализации я что-то не подумал. Благодарю)

Репозиторий может быть без интерфейса, если нет необходимости подменять реализации. Ещё ни разу не встретил такой необходимости (не участвовал в проектах с большим покрытием тестов, где требовалось бы подменять репозитории)

А интерфейс на уровне датасорса может быть? Допустим есть 3 разных метода получения одинаковых данных. Можно же выделить какой нить IDataSource и сделать 3 реализации его?

Vitaly Peryatin
Репозиторий может быть без интерфейса, если нет не...

А где вы в таком случае держите интерфейс? В data или domain?

Viktor
А где вы в таком случае держите интерфейс? В data ...

У меня нет интерфейса для репозитория, нигде не держу)

Viktor
А где вы в таком случае держите интерфейс? В data ...

интерфейса нет, а репозиторий лежит в data) у нас тоже нет лишних интерфейсов ради интерфейсов)

Pavel- Автор вопроса
Vitaly Peryatin
У меня нет интерфейса для репозитория, нигде не де...

Получается, domain знает об имплементации репозитория. Не гуд.

Pavel
Получается, domain знает об имплементации репозито...

Да, по книжкам не гуд. На практике большой буст в разработке и никаких неудобств, если знать где применять такое можно, а где не стоит

Vitaly Peryatin
Да, по книжкам не гуд. На практике большой буст в ...

это какой такой буст? имеется ввиду экономия времени на нажатие alt+enter enter?

Andrey
это какой такой буст? имеется ввиду экономия време...

Экономия времени на: - Переход между интерфейсами и реализациями - Создании интерфейсов - Мыслетопливе, чтобы разбираться в сложной иерархии

Vitaly Peryatin
Экономия времени на: - Переход между интерфейсами...

понятно, спасибо за ответ во дураки dependency inversion придумали, не хотят экономить на переходах между интерфейсами и реализациями

Andrey
понятно, спасибо за ответ во дураки dependency in...

Ну просто для всякой задачи есть своё решение. Для большинства проектов интерфейсами покрывать репозитории не надо. Но есть те, где приходится прибегать к более сложным реализациями

Jorik Fat
dip для других задач нужен

так интерфейс репозитория в domain, а реализация в data - это же классический dependency inversion, не?

Egor Sigolaev
А интерфейс на уровне датасорса может быть? Допуст...

DataSource это источник данных (database/network/filesyste) и у одного источника может быть много методов получения данных

Andrey
так интерфейс репозитория в domain, а реализация в...

классический. Но это же не означает, что его нужно всегда применять

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта