Size: a a a

Moxy – MVP библиотека под Android

2019 June 25

MR

Max Rovkin in Moxy – MVP библиотека под Android
DarkPerl
Тогда у нас засоряется Activity различными объектами и методами связанными с бизнес логикой приложения и работой с данными, разве нет ? Например, с базой данных и с сетью и тд и тп.
Можно, конечно, попробовать вынести все это еще в один отдельный класс\объект и разместить его в Activity и уже из него просить всякие Instance и прочее ) Ну, я не знаю, насколько такой вариант будет читабельнее и лучше )
Или может, я не совсем верно себе представляю как работать с MVP паттерном.
А вообще, разработчики Android могли бы изначально позаботиться о том, чтобы не делать Activity god object ом ))) Не знаю, почему они сделали именно так ) Им виднее, наверное )
чтобы активити не засорялось можно использовать классы-провайдеры или DI фреймворк
источник

MR

Max Rovkin in Moxy – MVP библиотека под Android
к тому же, бизнес логика не должна присутствовать в активити, это должно быть в интеракторе, крайний вариант - презентер
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Max Rovkin
чтобы активити не засорялось можно использовать классы-провайдеры или DI фреймворк
Ну, а если внутри presenter разместить интеракторы, это плохая практика ?
источник

MR

Max Rovkin in Moxy – MVP библиотека под Android
нет, не плохая, так и надо делать.
Презентер будет получать из интерактора данные и давать команды вью, чтобы последняя показала их, если надо
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Max Rovkin
нет, не плохая, так и надо делать.
Презентер будет получать из интерактора данные и давать команды вью, чтобы последняя показала их, если надо
Тогда, я получаю в конструкторе presenter необходимые данные, такие как ApplicationContext и передаю их интеракторам, а оттуда тяну все нужные данные ) Все как в аптеке ) 🤓
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
DarkPerl
Можете объяснить почему так будет лучше ?
Я просто не хочу засорять Activity лишними объектами, которые не связаны с бизнес логикой и работой с данными. Вроде MVP же паттерн )
Потому что явные зависимости лучше, чем неявные.
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
DarkPerl
Ну, а если внутри presenter разместить интеракторы, это плохая практика ?
Всё правильно, презентер зависит от интеракторов напрямую, и их использует.
источник

MR

Max Rovkin in Moxy – MVP библиотека под Android
DarkPerl
Тогда, я получаю в конструкторе presenter необходимые данные, такие как ApplicationContext и передаю их интеракторам, а оттуда тяну все нужные данные ) Все как в аптеке ) 🤓
по хорошему должно быть как-то так:
data source -> repository -> interactor -> presenter -> view

В вашем случае инстанс DB это data source.

Контекст не надо передатьва в презентер. Контекст надо передавать в provide метод, либо в DI он уже будет присутствовать.
В provide методе на основе контекста буедт создан инстанс DB, затем создается интерактор, в который передает инстанс, а уже интерактор передается в презентер - это грубое объяснение
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
DarkPerl
Тогда, я получаю в конструкторе presenter необходимые данные, такие как ApplicationContext и передаю их интеракторам, а оттуда тяну все нужные данные ) Все как в аптеке ) 🤓
А вот это как раз категорическая дичь :) Каждый класс должен получать в конструкторе непосредственно нужные ему зависимости, а не какие-то другие классы, которые нужны для того, чтобы создать эти зависимости.
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Алексей Ершов
Потому что явные зависимости лучше, чем неявные.
Спасибо, Алексей )
Я вот и стараюсь изначально продумать правильно архитектуру приложения ) В контексте Moxy приходится еще и с щепоткой магии разбираться )))
источник

MR

Max Rovkin in Moxy – MVP библиотека под Android
DarkPerl
Спасибо, Алексей )
Я вот и стараюсь изначально продумать правильно архитектуру приложения ) В контексте Moxy приходится еще и с щепоткой магии разбираться )))
советую изучить вот этот проект
https://gitlab.com/terrakok/gitlab-client

Там и мокси есть и архитектура нормальная.
источник

АЕ

Алексей Ершов in Moxy – MVP библиотека под Android
DarkPerl
Спасибо, Алексей )
Я вот и стараюсь изначально продумать правильно архитектуру приложения ) В контексте Moxy приходится еще и с щепоткой магии разбираться )))
архитектурные вопросы лучше в https://t.me/Android_Architecture :) Мокси добавляет магии, но совсем немного. Я бы на вашем месте не пытался сразу сделать супер-архитектуру, а хорошо бы разобрал  MVP, и только потом двигался дальше. Иначе получится каша из высшей математики и таблицы умножения.
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Max Rovkin
по хорошему должно быть как-то так:
data source -> repository -> interactor -> presenter -> view

В вашем случае инстанс DB это data source.

Контекст не надо передатьва в презентер. Контекст надо передавать в provide метод, либо в DI он уже будет присутствовать.
В provide методе на основе контекста буедт создан инстанс DB, затем создается интерактор, в который передает инстанс, а уже интерактор передается в презентер - это грубое объяснение
Я сейчас так сделал для простоты, чтобы написать прототип и протестить )
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Я заверну работу с данными в репозиторий и тд и тп )
источник

D

DarkPerl in Moxy – MVP библиотека под Android
И вместо явных типов данных, буду использовать интерфейсы, разумеется ) То есть DI )
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Спасибо, я сейчас посмотрю )
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Алексей Ершов
архитектурные вопросы лучше в https://t.me/Android_Architecture :) Мокси добавляет магии, но совсем немного. Я бы на вашем месте не пытался сразу сделать супер-архитектуру, а хорошо бы разобрал  MVP, и только потом двигался дальше. Иначе получится каша из высшей математики и таблицы умножения.
Спасибо )
источник

D

DarkPerl in Moxy – MVP библиотека под Android
Я понимаю, что делать сразу супер чистую архитектуру не стоит ) Как и увлекаться ООП и плодить цепочки наследования ) Для каждой задачи необходимы свои решения, уровни абстракции и так далее )
Просто начал разбираться с Moxy и сразу попал в лапы MVP ))))) С Щепоткой Магии )))) 🤓
До этого работал с понимаем того, что Activity может умереть ))) А теперь не совсем привычно )
источник

MR

Max Rovkin in Moxy – MVP библиотека под Android
надо учитывать, что смерть активити != смерт приложения, и мокси хранит данные, пока приложение живет, как только приложение дохнет, то все, пока.
источник

MR

Max Rovkin in Moxy – MVP библиотека под Android
в общем я бы советовал посмотреть доклады и почитать статьи
источник