В соответствии с текущей практикой (по крайней мере, с WPF и Silverlight) мы видим представления, связанные с привязками команд в модели представления, или, по крайней мере, видим, как просматриваются события, обработанные в моделях просмотра. Это, по-видимому, является нарушением SRP, потому что модель представления не просто моделирует состояние представления, но отвечает на представление (пользователь). Другие спрашивали как создавать модели представлений без нарушения SRP или спрашивали делают ли их реализации (это последнее контроллер в MVC, но примерно аналогичный).
Так ли текущие практики являются нарушением SRP? Или "модель взгляда" действительно представляет собой набор вещей, которые не нарушают SRP? Чтобы представить это немного, нам кажется, что нам нужно знать, что является единственной ответственностью, или если в концепции есть много обязанностей, - разделяются отдельные обязанности, соответствующие SRP. Я не уверен.
Определение Википедии модели представления говорит
[T] он ViewModel является "моделью представления", что означает абстракцию представления, которое также служит для связывания данных между представлением и моделью
Это кажется достаточно хорошим для SRP, но затем запись позже говорит (мой акцент добавлен)
[ViewModel] действует как связующее/конвертор данных, которое изменяет информацию о модели в представление информации и передает команды из представления в модель
В сообщение в блоге Prism о роли модели представления, автор говорит (опять же, мой акцент)
То, что сводится к тому, что модель представления является составной частью:
- абстракция представления
- Команды
- преобразователи значений
- состояние представления
Я уверен, что я пропустил множество определений там, но они, похоже, попадают в эти категории:
- Одиночная "неопределенная" ответственность за моделирование состояния представления (так что же мы делаем означает состояние)
- Несколько обязанностей (состояние просмотра, взаимодействие с пользователем (т. команды))
- Составные отдельные обязанности (абстракция, состояние, взаимодействие, преобразование), имея при этом одну Ответственность: "Управление всем этим".
Если вам интересно, я "забочусь" об этом, потому что (2) чувствует себя хорошо, но, похоже, встречается с преобладающими реализациями.