MVCとMVVMの違いがはっきりとわかりません。 ViewModelのコマンドは、コントローラーのアクションメソッドと同じように感じます。また、コントローラーとViewModelの両方が、データバインディングを介してモデルの状態を変更した後、ビューにそれ自体を更新するよう通知します。 2つのパターンの主な違いは何ですか?
コントローラとViewModelはさまざまな点で異なります。
MVCでは、コントローラーはビューを認識しており、ビューを変更できます。また、モデルを認識しており、それを呼び出すことができます。 MVVMでは、ViewModelはViewの抽象的な表現であり、具象UIを認識していません。必要に応じて表示できるようにモデルをラップします。
従来のMVCでは、コントローラーは、モデルと対話するビューの 戦略 にすぎません。実際、コントローラーは必要ない場合もあります。 MVVMでは必要ありません。異なる動作が必要な場合は、同じビューに異なるViewModelを設定できます。 MVCでは、たとえば、モデルと通信するためにReadOnlyControllerまたはAdminControllerを使用できます。 MVVMでは、2つのViewModelを用意し、Viewに必要な1つを選択することができます。
しかし、それらにはいくつかの類似点があります。どちらのパターンでも、ビューは observer です。従来のMVCでは、ビューはモデルのオブザーバーであり、MVVMではViewModelのオブザーバーです。
どちらのパターンも、懸念を分離することを目的としています。 MVVMは主に、使用中のUIテクノロジーとは完全に独立した、ビューの抽象化を提供することを目的としています。 MVCはそんなに行きません。ビジネスロジック(モデル)をビューに配置しないように、それは主に関心事の分離に焦点を当てています。
同様の質問に対する私の answer も役立つかもしれません。
最後に、両方のパターンが同じファミリーに属していると言う必要があります。 MVVMが子孫であるMVPは、MVCの兄弟です。さらに詳しく知りたい場合は このリンクはMartin FowlerのWebサイトにあります 、彼はすべてのことを詳細に説明しています。