「MVC、MVP、およびMVVMのデザインパターンの違いは何ですか」というフレーズを使用してGoogleを検索すると、 MVC、MVP、およびMVVMのデザインパターンの違いは理論的には似ている :
MVP
データコンテキストによるバインドが不可能な状況で使用してください。 Windowsフォームはその好例です。モデルからビューを切り離すためにはプレゼンターが必要です。ビューはプレゼンターに直接バインドできないため、情報はインターフェイス(IView)を介してビューに渡される必要があります。
MVVM
データコンテキストを介したバインディングが可能な状況で使用してください。どうして?各ビューのさまざまなIViewインタフェースが削除されたため、保守するコードが少なくなります。 MVVMが可能ないくつかの例には、Knockoutを使用したWPFおよびJavaScriptプロジェクトが含まれます。
MVC
ビューとプログラムの他の部分との間の接続が常に利用可能であるとは限らない状況で使用します(そしてMVVMやMVPを効果的に使用することはできません)。これは、Web APIがクライアントのブラウザに送信されたデータから分離されている状況を明確に説明しています。 MicrosoftのASP.NET MVCは、このような状況を管理するための優れたツールであり、非常に明確なMVCフレームワークを提供します。
しかし、違いを理論的にサンプルコードと一緒に説明する単一の記事は見つかりませんでした。
これら3つのデザインパターン(MVC、MVP、MVVM)の違いをコードと一緒に説明した記事があれば、本当にうれしいです。
これら3つのデザインパターン(MVC、MVP、およびMVP)で実装されている3つの類似CRUDアプリのソースコードを手に入れたいです。 MVVM)それで私はコードを調べて、これら3つのデザインパターン(MVC、MVP、MVVM)のためにどのようにコードを書くべきか理解することができるように。
そのため、これら3つのデザインパターン(MVC、MVP、MVVM)でコードがどのように異なるかについて説明している記事があれば、その記事にリダイレクトしてください。
This 良いスターターになるはずです。実際には、あなたが選んだ「プラットフォーム」もあなたがこれらのパターンをどのように使うかに大きな役割を果たしています。たとえば、MVVMは当然WPFに適していますが、MVPはWindowsフォームでうまく機能します。 ASP.Net MVCはそれ自身のために話します。
いくつかの基本的な違いは手短に書くことができます。
MVC:
伝統的なMVCはそこにあります
MVP:
従来のMVCと似ていますが、ControllerはPresenterに置き換えられています。しかし、プレゼンターは、コントローラーとは異なり、ビューの変更も担当します。ビューは通常プレゼンターを呼び出しません。
MVVM
ここでの違いはView Modelの存在です。これはObserver Design Patternの一種の実装であり、モデルの変更はビューでもVMによって表されます。例:スライダーを変更すると、モデルだけでなく、ビューに表示されているテキストである可能性のあるデータも更新されます。そのため、双方向のデータバインディングがあります。
リンクからの素晴らしい説明: http://geekswithblogs.net/dlussier/archive/2009/11/21/136454.aspx
まずMVCを見てみましょう
入力はビューではなく、最初にコントローラーに向けられます。その入力はページと対話しているユーザーから来るかもしれませんが、それはまたブラウザに特定のURLを入力することからであるかもしれません。いずれの場合も、いくつかの機能を開始するためにインターフェースされているそのコントローラーです。
コントローラとビューの間には、多対1の関係があります。これは、実行されている操作に基づいて、単一のコントローラが異なるビューをレンダリングするように選択できるためです。
ControllerからViewへの一方向の矢印があります。これは、ビューにコントローラに関する知識や参照がないためです。
コントローラーはモデルを返送するので、ビューとそれに渡される予定のモデルとの間には知識がありますが、それを処理するコントローラーにはありません。
MVP - モデルビュープレゼンター
それでは、MVPパターンを見てみましょう。主な違いを除いて、MVCと非常によく似ています。
入力はプレゼンターではなくビューで始まります。
ビューと関連付けられているプレゼンタの間には1対1のマッピングがあります。
ビューはプレゼンターへの参照を保持します。プレゼンターはまた、ビューからトリガーされたイベントに反応しているので、それに関連付けられているビューを認識しています。
プレゼンタは、モデルに対して実行した要求されたアクションに基づいてビューを更新しますが、ビューはモデルに対応していません。
MVVM - モデルビュービューモデル
MVCとMVPのパターンを目の前にして、MVVMパターンを見て、それがどのような違いを持っているのかを見てみましょう。
入力はビューモデルではなくビューで始まります。
ビューがビューモデルへの参照を保持している間、ビューモデルにはビューに関する情報がありません。これが、さまざまなビューと1つのビューモデルとの間で1対多のマッピングをテクノロジ間でも可能にする理由です。たとえば、WPFビューとSilverlightビューは同じビューモデルを共有できます。