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

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

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

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

36 ответов

16 просмотров

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

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 вот тут нет циклической зависимости?

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта