Re: MVVM
От: Буравчик Россия  
Дата: 21.12.19 13:15
Оценка: 2 (1)
Здравствуйте, Flem1234, Вы писали:

F>Вью модель, которая сейчас занята в основном согласованостью своего состояния. Например, если пользователь выбрал какой-то элемент, то ему доступно то или другое, а третье не доступно.


Разбивай большое состояние на небольшие части. Выдели промежуточные классы, которые отвечают за согласованность только этой части.
И общий класс, который управляет состоянием этих промежуточных классов.

F>Пытаясь упростить вью модели (они и так достаточно сложные), я выношу логику в дополнительные классы, которые используют и классы модели и класс вью модели. Например, пользователь нажал кнопку. Я должен поставить значение вью модели, дергнуть пару сервисов и по окончанию их работы восстановить значение из вью модели. Дополнительно, для обработки событий от внешних сервисов, приходится создавать дополнительные классы, основная работа которых среагировать на событие от сервиса, запросить еще данных от вью модели, вызвать пару сервисов, обновить вью модель.

F>В принципе, все получается нормально, но хочется как-то унифицировать (в любом смысле) классы, которые обрабатывают действия пользователя и реагируют на события сервисов.

Все правильно делаешь. Для унификации всю логику приложения (полезная работа) нужно вынести в дополнительные классы — команды. Вся работа приложения должна идти только через эти команды. Пользователь нажал кнопку — вызвал команду, сообщил пользователю результат. Поступило событие от внешнего сервиса — вызвал команду.

Общий код команд выделяешь в отдельные классы, которые используются командами совместно, и, возможно, делаешь иерархию команд.
Best regards, Буравчик
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.