https://ja.wikipedia.org/wiki/Model_View_ViewModel
MVVMは、GUIアプリを、Model-View-ViewModelの3つの部分に分割して実装するソフトウェアアーキテクチャパターン。MVCの派生。
MicrosoftのWPF(Windows Presentation Foundation)で採用されている。
Model→Viewへの内容反映は(ライブラリ等で用意された)データバインディング機構を使って行う。
Model
MVCのModelと同じ。ビジネスロジックを表現する要素。
DB等とのやりとりもこの中に含まれる。
Modelは描画にかかわらないが、装飾についての情報(例えば「背景色を赤にする」など)をModelに含むことは問題ない。
ViewModel
Viewを描画するためのModelの保持と、Viewから受け取った入力を適切な形に変換してModelに伝達する要素。
Viewとの通信はデータバインディング機構のような仕組みを通じて行うため、ViewModelの変更は開発者から見て自動的にViewに反映される。
具体的には、WPFの*.xaml.csのコードがこれに当たる。
View
Viewは、ViewModelに含まれたデータをデータバインディング機構のようなものを通じて自動的に描画するだけの要素。
UIへの出力とUIからの入力を担当する。
Viewそのものに複雑なロジックと状態を持たないため、デザイナからこのコードを自動生成することができる。
具体的には、WPFの*.xaml(正確にはそこから自動生成されるオブジェクト)がこれに当たる。