Слайд 2Стандартные паттерны
MVC (Model-View-Controller)
MVP (Model-View-Presenter)
MVVM (Model-View-ViewModel)
Кратко говоря – Model-View-Delegate
Слайд 3Model
Модельки объектов для взаимодействия View и Presenter
Слайд 4View
Отображение данных, полученных от делегата
Передает действия пользователя в делегат
Управляется делегатом
Не содержит
логики
Слайд 8MVC vs MVP
Presenter управляет View через интерфейс непосредственно, Controller управляет View
опосредованно через Model
Controller может управлять несколькими View, а также переключать их, а Presenter управляет только одной View
Слайд 9Наша архитектура
Слой данных (Repository, кэширование)
MVP
Слайд 13Экран авторизации
Проверяем текущее состояние авторизации
Ошибка при нажатии кнопки, когда поля ввода
пустые
Инициация процесса авторизации при выполнении запроса
Показ и скрытие процесса загрузки пользователю
Открытие главного экрана в случае успешной авторизации
Отображение ошибки в поле логина в случае неудачной авторизации
Слайд 16Реализуем интерфейс AuthView в AuthActivity
Слайд 19AuthPresenter - обрабатываем нажатие кнопки входа
Слайд 21Вопросы
Насколько такая архитектура масштабируема?
Можно ли передавать Context в Presenter?
Нужно ли делать
интерфейс или базовый класс для Presenter?
Слайд 23Практика
Проект GithubMVP
Нужно перевести экран walkthrough (описание в WalkthroughActivity) на MVP
Реализовать экран
списка коммитов (описание в CommitsActivity) в соответствии с паттерном MVP и описанными сценариями
Слайд 24Дополнительно - библиотека Mosby
Слайд 25Зачем нужны библиотеки
MVP немного увеличивает код
Приходится писать много стандартного кода для
каждого экрана
Слайд 26Будьте крайне осторожны!
Использование библиотеки для создания архитектуры нарушает первый из принципов
Clean Architecture
Библиотека вынуждает вас писать код в ее рамках
Нужно хорошо изучить конкретное решение перед его использованием
Слайд 28Преимущества Mosby
Структурирование кода и его организация в соответствии с паттерном MVP
Не
нужно явно хранить View и Presenter в виде полей
Автоматическое связывание View и Presenter
LCE-экраны (Loading-Content-Error)
Слайд 33Практика - 2
Проект GithubMosby
Нужно перевести экран walkthrough (описание в WalkthroughActivity) на
MVP с использованием библиотеки Mosby
Реализовать экран списка коммитов (описание в CommitsActivity) в соответствии с паттерном MVP и с использованием библиотеки Mosby