Абстракция [т.е. программирование интерфейса] полезна тогда и только тогда, когда требуется слабая связь [т.е. независимая от реализации взаимосвязь между потребителем и производителем].
В зависимости от вашей интерпретации модели View ViewModel [MVVM] допускается жесткая связь.
На практике типичный сценарий, который я видел, - это тесная связь между View и ViewModel и между View и Model (s). Как правило, поскольку представления разработаны с учетом конкретных бизнес-требований, модели ViewModel адаптированы к представлению, чтобы облегчить его бизнес-роль.
Как Бен Фон Хандорф предлагает , та часть нашего приложения, которая фактически адаптирует базовую модель (ы) к ViewModel, должна быть отделена от нашего представления [по крайней мере, декларативное представление часть]. Таким образом, адаптация обычно фиксируется реализацией Команды представления. Таким образом, в то время как декларативный аспект представления не имеет представления о базовой модели (ях) и слабо связан, бизнес-реализация или команда представления вводит тесную связь между представлением и моделью. Опять же, это круто, потому что единственная цель View - использовать эти данные определенным образом в рамках своей деятельности.
Я тоже являюсь поклонником абстракций, в частности, программирования интерфейса, внедрения зависимостей [DI] и инверсии управления [IoC]. Однако, когда тесная связь имеет смысл, как это имеет место в MVVM, тогда абстракция является чрезмерным осложнением.
IMO, простота, представленная тесной связью, делает MVVM настолько привлекательной по сравнению с его кузенами в пространстве Model View Controller [MVC].