Чистая архитектура на 2 фрагмента, которые похожи по функциям с MVVM?
Я работаю над приложением для Android в Kotlin, в котором есть профили пользователей, и изо всех сил стараюсь кодировать как можно более чисто, используя MVVM. Работая над частью, отвечающей за обновление профиля пользователя, я заметил, что модель (POJO), viewmodel и сам фрагмент на 90% похожи на те, которые отвечают за регистрацию пользователя. У меня вопрос, какой дизайн выбрать и почему:
- разделить 2 действия, соблюдая принцип единой ответственности, но иметь много повторяющегося кода
- объединить их в одно действие (одну модель просмотра, модель и фрагмент) с некоторыми дополнительными if здесь и там
Или есть другой способ? Может с интерфейсами? Наследства? Как это реализовать?
2 ответа
MVVM имеет три сильных стороны для чистого кодирования. ВИД - МОДЕЛЬ - ViewModel
- Ваш фрагмент будет ПРОСМОТРОМ для отображения профилей и выполнения действий со стороны пользователя
- ViewModel будет для расчета или управления данными профилей
- Модель / репо для генерации / получения данных профилей с или на сервер / хранилище
Фрагменты <-> ViewModel <-> Repo / Model
Используйте наследование, чтобы сохранить общий код в модели basefragmet / viewmodel . Так что у тебя есть:
UserProfileUpdateFragment -> UserProfileFragment UserProfileRegisterFragment -> UserProfileFragment
или
UserProfileUpdateVM -> UserProfileVM UserProfileRegisterVM -> UserProfileVM