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

Например в группе приложений одного и того же производства можно

сделать одинаковую регистрацию/авторизацию. Но при этом после ее прохождения она будет отправлять на разные экраны

приложение магазина для продавца и покупателя после авторизации будет вести на товары/личный кабинет (делать 2 разных навигации?)

36 ответов

18 просмотров

а почему нельзя держать реализацию навигации в бизнес-слое, но для разных подвидов одного продукта иметь разную реализацию этой навигации?

Jorik-Fat Автор вопроса
Zlatko Pušić
а почему нельзя держать реализацию навигации в биз...

можно. Все можно. Только это принесет свои последствия. например нельзя модуль будет перенести в другое приложение (т.е. отсутствие гибкости) а это влечет за собой кратное увеличение правок (нарушение DRY), вместо того, чтобы 1 раз изменить navigator - меняем в каждом продукте

Jorik-Fat Автор вопроса
Zlatko Pušić
а почему нельзя держать реализацию навигации в биз...

Гораздо более гибкое решение после авторизации вызвать abstractRouter.forward(), чем переписывать эти реализации каждый раз

Jorik Fat
Гораздо более гибкое решение после авторизации выз...

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

Jorik-Fat Автор вопроса
Zlatko Pušić
вам так или иначе придётся что-то переписывать, ес...

разумеется. Только если 3 меня 3 продукта - мне придется переписать 1 абстракцию и 3 реализации; при Вашем решении 3 абстракции и 3 реализации

Jorik Fat
разумеется. Только если 3 меня 3 продукта - мне пр...

при моём решении тоже будет 1 абстракция и 3 реализации

Jorik-Fat Автор вопроса
Zlatko Pušić
а почему нельзя держать реализацию навигации в биз...

в Вашем решении бизнес слой будет привязан к навигации. И если его перенести в приложение, где навигация будет не нужна - будет болтаться лишние классы

Jorik Fat
в Вашем решении бизнес слой будет привязан к навиг...

не, ну если это приложение "Hello world", то действительно на некоторых платформах может не потребоваться навигация

Jorik Fat
разумеется. Только если 3 меня 3 продукта - мне пр...

В доменном слое должны быть исключительно 3 вещи: usecase'ы, business entity, интерфейсы источников данных. Навигация - это чисто ui.

Jorik-Fat Автор вопроса
Руслан
В доменном слое должны быть исключительно 3 вещи: ...

там еще могут быть AbstractPresentation(опционально) я разделяю ui и presentation

Jorik Fat
там еще могут быть AbstractPresentation(опциональн...

А что такое в вашем понимании AbstractPresentation?

Jorik-Fat Автор вопроса
Руслан
А что такое в вашем понимании AbstractPresentation...

абстракция Presenter/ViewModel Как например отображать новое сообщение в чате, если Domain ничего не знает про Presentation?

Jorik Fat
абстракция Presenter/ViewModel Как например отобра...

Презентер подписывается на usecase к примеру через callback/rx observer

Jorik-Fat Автор вопроса
Руслан
Презентер подписывается на usecase к примеру через...

т.е. presenter обращается к domain. Я говорю про случай, когда с бекенда приходит push. Как Domain'у обратиться к Presenter'у?

Jorik Fat
т.е. presenter обращается к domain. Я говорю про с...

Ну к примеру частный случай: через rx flowable отлично реализуется такая модель. Посмотрите к примеру как можно получать уведомления об измении бд через room + rx

Jorik-Fat Автор вопроса
Jorik Fat
нет ни rx ни flowable (бизнес запрещает)

Ну используйте обычные колбэки, какая разница)

Jorik-Fat Автор вопроса
Руслан
Ну используйте обычные колбэки, какая разница)

как domain'у вызвать метод у presenter'а если он ничего о нем не знает?

Jorik Fat
как domain'у вызвать метод у presenter'а если он н...

Домайн не должен вызывать методы у презентера, это прямое нарушение принципов solid

Jorik-Fat Автор вопроса
Руслан
Домайн не должен вызывать методы у презентера, это...

т.е. вызовы у абстрактных источников данных - не нарушение, а вызов у абстрактного пресентера - нарушение. Что-то не складывается

Jorik Fat
т.е. вызовы у абстрактных источников данных - не н...

Вызов источников данных которые реализуют интерфейсы источников данных обозначенных в доменном слое это не нарушение

Jorik-Fat Автор вопроса
Руслан
Вызов источников данных которые реализуют интерфей...

я Вам больше скажу, в Domain'е еще много интерфейсов лежит (как минимум 2 еще)

Jorik Fat
я Вам больше скажу, в Domain'е еще много интерфейс...

Сугубо индивидуально, чистая архитектура это абстракция, которая не ставит нас в жесткие рамки

Jorik-Fat Автор вопроса
Руслан
Инверсия зависимостей очевидно

Так это нарушение чистой архитектуры, а не солида

Daniil Tsaryov
Так это нарушение чистой архитектуры, а не солида

Насколько я помню инверсия зависимостей это как раз последний из принципов в аббревиатуре solid, чистая архитектура базируется на нём

Jorik-Fat Автор вопроса
Руслан
Насколько я помню инверсия зависимостей это как ра...

мимо. Чистая архитектура реализует все 5 принципов

Jorik Fat
так разница в чем?

Это циклическая зависимость получается, не?

Jorik Fat
мимо. Чистая архитектура реализует все 5 принципов

Да, все 5 принципов, я и не утвеждал обратное

Jorik-Fat Автор вопроса
.
Это циклическая зависимость получается, не?

вот тут нет циклической зависимости?

Jorik Fat
screenshot вот тут нет циклической зависимости?

Так твоя база не знает об интеракторах

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта