MVVM (Model - View - ViewModel) - это адаптация MVP (Model -View - Presenter) или MVC (Model - View - Controller) шаблоны, оба из которых являются очень популярными шаблонами проектирования для приложений C ++. Основные изменения в шаблоне проектирования заключаются в улучшении поддержки WPF и Silverlight, поэтому WPF не столько подходит для MVVM, сколько MVVM подходит для WPF.
В основном изменения касаются чистой поддержки архитектуры привязки и команд, присутствующей в технологиях XAML, посредством использования объектов INotifyPropertyChanged
и ICommand
. И снова эти изменения не помогут в C ++, поскольку он не имеет встроенной поддержки этих высокоуровневых концепций. Это не значит, что вы не можете имитировать всю эту функциональность в C ++, но по пути вы будете использовать базовый шаблон MVP / C, и в большинстве случаев это «достаточно хорошо».
Я думаю, что MVVM был разработан специально для поддержки WPF. Похоже, что компания microsoft специально разработала этот паттерн для поддержки тех рабочих процессов разработчика и дизайнера, которые они предполагали для WPF/Silverlight.
Так что причина, по которой вы, вероятно, не слишком часто слышите о нем за пределами мира WPF/Silverlight/XAML, двояка.
Это не имеет никакого отношения к C++ или какому-либо языку как таковому, это скорее связано с тем, что это имеет смысл только в контексте WPF/Silverlight.
Единственное, что MVVM привносит в таблицу, чего нет у других моделей разделения представлений и логики - это команды/привязки WPF/Silverlight. Основная причина использования MVVM - это использование мощной системы связывания, встроенной в WPF/Silverlight, просто не имеет смысла говорить об этом в разных контекстах, если у них нет похожей модели.