Где разместить бизнес-логику в приложении Dagger / MVP - PullRequest
0 голосов
/ 21 декабря 2018

Посмотрев на множество демонстрационных приложений Dagger, мне не ясно, где размещены бизнес-объекты.В типичном трехуровневом приложении есть пользовательский интерфейс, бизнес-уровень и уровень доступа к данным.MVP - это, по сути, трехуровневая архитектура.

Dagger работает с компонентами и модулями, и я видел, как демонстрационные приложения размещают бизнес-логику в модулях.Но в соответствии с архитектурой MVP бизнес-логика относится к уровню Presenter, так как предполагается, что эти уровни действуют как мост между пользовательским интерфейсом и моделью.Многие из этих демонстрационных приложений имеют модели, которые состоят из не более чем класса с открытыми полями для хранения и извлечения данных.

Может кто-то уточнить, как это сделать.

1 Ответ

0 голосов
/ 21 декабря 2018

Следуя чистой архитектуре, которая была описана дядей Бобом, весь ваш код, содержащий бизнес (доменную) логику (правила), должен находиться внутри бизнес-уровня.
Например, мы разрабатываем мобильное приложение для онлайн-заказа еды / одежды.Не имеет значения.

Уровень представления: (Состоит из представление и представление )

- Presenter - ручкапросмотр намерений (нажатие кнопок, просмотр отрисовки и т. д.), вызов бизнес-интеракторов, после получения результата от интеракторов, говорит о необходимости визуализации для отображения текущего состояния экрана / макета.
- Просмотр - не более, чем визуализацияИнтерфейс пользователя, держите представление тупым, вся ваша логика представления должна быть в презентере.

Пример: В этом слое вы можете проверить, например: экран корзины пользователя, ваш уровень презентации делает запросИнтерактор, который возвращает элементы корзины.Если список пуст, в вашем представлении отображается макет с заголовком «Ваша карта пуста», в противном случае отображается список элементов.

Бизнес / Доменный уровень: (Состоит из интерактора , вспомогательные классы и т. Д.)

Правило номер один - поддерживать уровень вашего домена в чистоте.Если вы используете gradle, вы можете использовать мультипроект с пустыми зависимостями.Только язык, rxjava, потому что это почти стандарт нашего времени.

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

Уровень данных:

Знает, как сохранять, извлекать, обновлять, удалять информацию.Все о настойчивости.В случаях Android: уровень данных может сделать http запрос через retrofit2, room orm и т. Д. Кэш начинается здесь.

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

Также важно использовать принципы SOLID.Это сделает вашу архитектуру понятной, гибкой и обслуживаемой.Подробнее здесь .

...