Деформация MVP ведущий внутри viewmodel в Android? - PullRequest
0 голосов
/ 02 июля 2018

Одним из недостатков шаблона презентатора mvp является обработка состояния активности или изменения ориентации, в то время как модель представления переживает изменения ориентации, так что я могу обернуть презентацию внутри модели представления и все еще использовать MVP?

Ответы [ 2 ]

0 голосов
/ 07 июля 2018

На самом деле MVP MVVM и MVC - это всего лишь шаблоны проектирования. Ни один из них по своей сути не решает проблемы, налагаемые конкретной платформой. Они нацелены на то, чтобы предоставить разработчикам механизм для организации структуры кода в логические роли в соответствии с принципом разделения ответственности (см. Разработка программного обеспечения SOLID ).

Проблема сохранения состояния в связи с изменениями конфигурации в операциях Android (поворот - только один из них) присутствует в качестве функции операционной системы Android. У Google есть одно решение для их архитектурных компонентов, которое, как я полагаю, вы называете ViewModel, но это не означает MVVM, поскольку шаблон поддерживает его напрямую.

Как уже упоминалось @ zsmb13, вы можете довольно чисто использовать модель представления в качестве докладчика.

Что касается сохранения состояния, у меня есть другой подход: ucs Framework и небольшая статья об одном из подходов: Простой MVP-подход для Android - The Простой подход MVP в настоящее время не рекомендуется в пользу структуры ucs, которая помимо сохранения состояния также управляет многопоточностью.

0 голосов
/ 02 июля 2018

Конечно, у вас может быть презентатор, который живет внутри ViewModel, чтобы пережить изменения конфигурации, и жить в течение того же времени, что и Activity или Fragment.

Вы также можете сделать своего презентатора подклассом ViewModel или даже использовать MVVM с компонентом вида, наблюдающим LiveData из ViewModel, чтобы автоматически обеспечивать безопасность при обработке жизненного цикла в этой точке (как видно из недавно нажал Google).

...