Добрый день. Заглянул под капот android arch components конкретно viewModel. И получилось что в итоге это тот же самый презентер из мвп. И собственно сам вопрос. Нормальная ли практика использовать viewmodel + livedata вместо презентера и view iterface который передаем в презентер (при условии что бизнесс логика в презентерах в обоих случаях) . Ибо если так подумать livedata + viewModel сама отписывается, a viewModel не утекает при нормальном использовании.
идея презентера - вынести логику из View чтобы можно было в том числе подменять реализацию View в тестах,
без презентера - опять логика во фрагменте будет?
да и на ViewModel можно в самом презентере подписываться если View отнаследовать от LifecycleOwner
интерактор это уже слой выше,
что будет между событиями во View и операциями предметной области из интерактора? Интерактор по идее принимает уже готовую бизнес-модель. Кто ее соберет? Если View работает со своей view-моделью.
Андроид ViewModel это только способ доставки результата фоновой задачи во View. Но если результат напрямую во View то там же в обсервере оказывается и логика его использования , и теряется возможность независимого тестирования слоев, от чего спасал презентер.
Смотрите.
Presenter: по сути имеет ссылку на интерфейс view, который имеет методы к примеру displayUserData(user: List) мы берем юзеров из модели чтото с ними делаем и отображаем.
ViewModel: Допустим у нас есть val userData = MutableLiveData <List<User>>(), также в viewModel передаем в конструктор ту же model и также делаем userData.value = model.getUsers(). И данные в observer приходят для отображения во View.