Структура UI-слоя
May 26, 2020 · View on GitHub
Структура UI-слоя
Ядром UI-слоя приложения является core-mvp. Данный модуль предоставляет набор базовых классов для построения MVP.
Структура слоя
К UI-слою принадлежат следующие сущности:
-
Presenter- основной частью этого слоя являются презентеры экранов, содержащие всю логику соответствующего экрана.
-
View - является максимально пассивной и выполняет 2 задачи:
-
Показывает информацию пользователю;
-
Передает события пользовательского ввода в Presenter.
-
-
ScreenModel - дополнительная сущность, инкапсулирует состояние экрана, Переживает смену ориентации.
-
Route - маршрут для навигации, ответсвенен также за упаковку данных в интенты или бандл.
-
Configurator - содержит Dagger-компонент экрана, инкапсулирует в себе логику работы с даггером.
Эти пять сущностей полностью описывают экран.
Также к UI относяться любые вспомогательные классы, extension-методы, которые взаимодействуют с отображением.
Презентер взаимодействует с View через изменение ScreenModel. Апи вью и презентера
должны состоять из методов типа void doSomething(). Таким образом обеспечивается
unidirectional data flow

Здесь Actions - это Presenter, а State - ScreenModel. View передает сообщает презентеру о том, что произошло некоторое событие(презентер может быть подписан на событие, или его метод установлен как листенер). Презентер обращается к слою Interactor, меняет ScreenModel и передает ее на View для отрисовки. Таким образом, View отвечает только за то, что необходимо перерисовать.
Презентер же отвечает за логику и навигацию. Он содержит все необходимые для этого зависимости.
Структура пакетов/модулей
Используется многомодульная архитектура.