Model View ViewModel
ViewModelの責務はModel-View間の形を合わせるための変換と値の保持であり、そのためにViewModelはModel変換の演算をおこなう。しかしこの演算においてModelが担うべき演算まで実装してしまう危険性があり、しばしば起きるこの実装ミスとそれによる肥大化はファットViewModelと呼ばれる。
アプリケーションをプレゼンテーションとドメインに分けて考えようとした際にはこの事が混乱の一因となっている。Modelの役割は、後述するViewとViewModelの役割以外の部分と考えるのが妥当である。
ModelはViewの描画について知らないし、知る必要もない。ここで重要なのは、Modelは描画について関わらないだけで、Viewの見た目、装飾についての情報を保持したりするのはMVVMパターンとして何の問題も無いということである。つまり、そのアプリケーションが背景色や文字色、コントロール間の余白といった表示をカスタマイズできる場合、その背景色や文字色や余白のサイズを保持するのはModelである。ただし上述した通りModelは描画には関わることは無く、その情報を元に実際に描画するのはViewの役目である。(もちろんこのModelの情報はViewModelを経由してバインドされる。)