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