何MVPやMVC、どのような相違がありますか?
-
08-06-2019 - |
質問
時を超えての ティラド ドラッグドロップを設定し)ることができユーザーインターフェースで多くのツールを促進するよう三つのデザインパターンと呼ばれ Model-View-Controller, モデル-ビュー-発表者 や Model-View-ViewModel.私の質問は三つの部品で
- どのような課題これらのパターンか
- どのように類似?
- ものに頼ることはできるか、またない、ということでしょうか?
解決
モデル-ビュー-発表者
に MVP, は、報告者のUIビジネスロジックに。すべてのメソッドの呼び出しからの委譲を直接表講師の方にも分離の直接観点から多様なプレーヤーと対話をすることにより、インターフェース。これは、嘲笑うの視ユニットテストです。共通の属性のMVPであることがたくさんの双方向の派遣.例えば、人がクリック、"保存"ボタンを押すと、このイベントハンドラ代表の発表者の"OnSaveの方法である。一度の保存が完了し、発表を通のアプローチを通してそのインタフェースのビューを表示できることを保存が完了しました。
MVP傾向にあるとても自然なパターンの実現を分離発表Webます。その理由は、このビューが常に最初のASP.NET を行います。ができ 詳細は両方のバ.
二つの主な変動
パッシブビュー: のとしてのダムとして含むほとんどゼロ。本報告では、中人と話すとデニースザメネースパークモデルです。とデニースザメネースパークモデルを完全にシールドします。このモデルのためのイベントが、発表者が契約を更新します。受動的にビューが直接データの結合には、代わりに、ビュー公開セッタ特性によるプレゼンタ用のデータです。すべての状態を管理し、発表者となる方は受付にお申し出ください
- プロジェクト最大testability面クリーンの分離とデニースザメネースパークモデル
- コン:あり(例えば、すべてのセッター特性)を確認することができますべてのデータを結合。
監督コントローラ: 発表者は、取り扱うユーザーの身振り手振りで伝えます。の結合のモデルへの直接データに結合する。この場合での発表者の仕事を通のモデルのビューできるように結合します。プレゼンターも収録されている論理のための身振りなどのボタンを押下し、ナビゲーションなど。
- プロジェクトを活かしdatabinding量のコードを低減します。
- コン:が少なテスト面でのデータを結合であり以外の封止は、ビューで直接対話のモデルです。
Model-View-Controller
の MVC, のコントローラを担うるかを決定するビューを表示への対応の行為を含む場合に適用。このと異なるMVP場の行動ルートを通じてビューの表にMVC、行動の相関の呼び出しコントローラと共に行動する。Webでの各行動を呼び出しのURLにあるコントローラーの方が対応しています。そのコントローラは終了処理では正しい。の配列を続けていることを通じて、生命の応用:
Action in the View -> Call to Controller -> Controller Logic -> Controller returns the View.
一つの大きな違いて簡単に示せずに直接結合モデルです。のビューで描画し、完全無国籍.るMVCの実装を見通しませんのロジックですべてのコードを作ります。これに反するMVPでは絶対に必要な場合は見ない処理を移譲するプレゼンターませんの呼び出されます。
モデルを発表
一つのパターンを眺めるの モデルを発表 パターンです。このパターンありません。クライアント側に特別な設定ビューの結合に直接発表モデルです。のモデルは模型製作に特化したもの。ここのモデルされるもので物性というドメインモデルとしてこの違反に分離のです。この場合、プレゼンテーションモデルに結合するドメインモデル、契約のコンテンツはただ今からそのモデルです。を示して参加イベントからの発表モデルの更新そのものです。のモデルなコマンドのビューの用途を呼び出します。このアプローチの利点ができる本質的に除去、コードの背後にように完全に完全にカプセル化すべての行動のために。このパターンが非常に強力な候補者用コンポーネントのラインナップアプリケーションとも呼ばれる Model-View-ViewModel.
があり MSDN条約の発表モデル 一部の 複合適用指導のためのコンポーネントのラインナップ 旧プリズム) 分離パターンを発表
他のヒント
このoversimplificationの多くの異はこれらのデザインパターンが、こうしてではないかと思いたいの違いにつ。
MVC
MVP
I bloggedすが、引用に Todd Snyderの優れた後に二つの違い:
ここでの主な違いについ のパターン:
MVPパターン
- ビューは疎結合のモデルです。講師の方 責任者の結合のモデル る方は受付にお申し出ください
- 簡単体テストまでの相互作用によ インターフェース
- 通常、ビューの発表の表示にします。複雑な意見が マルチ願いいたします。
MVCパターン
- コントローラーに基づく行動できるできるようにしてくれます。 眺望
- を目的として評価されるかを決定するビューを表示
最高の説明をウェブか。
こちらのイラストを代表する通信の流れ
MVPは ない 必ずしもシナリオのビューが担当(TaligentのMVP。
思うのですが残念な人であることも説教としてこのパターンビューの料金)に対して抗パターンとして矛盾があるんで"さんのビュー"(実践的プログラマー)."それだけのビュー"の最終示、ユーザーは二次的なものを用いることとする。Microsoft MVPパターンを描画し再利用の眺望がはるかに困難であと 便利に 言い訳Microsoftのデザイナーからの励みに悪いです。
にフランクしていると思うと配下の懸念MVC持うMVP実施及びこれらの差額についてはほとんど意味的にもし、以下の分離に関との間のビューを表示するデータのコントローラー(initialises制御のユーザー相互作用のモデルにおけるデータおよび/またはサービス)はacheivingのMVC.まacheivingにしたんだかどうかのパターンはMVC MVPや監督コントローラ?のみ 実 パターンとしてMVC探しも、予約も、支払も、全部で異なる味です。
検討 この 高励する総合的にリスト数の異なる実装.を参照してくださいそれらはすべて基本的には同じことをやっててちょっとしたことだけど、これは若干異なる。
と思っているMVPましたが、最近再導入してキャッチーな期には議論と意味bigots論るかどうかもが簡単に行ないまたは正当化Microsofts急速なアプリ開発ツールです。もしこれらの理由に私の書籍を正当化する存在として別々のデザインパターンです。
MVP:のビューが担当。
以下のソフトウェアは、ほとんどの場合、作成、発表者.プレゼンターとの交流のモデルを操作するアプローチを通して、インターフェース。を見ることがありとの交流の発表者は、通常よりもインターフェース。このサイトを実施いの通話方法の発表者はんのビューにイベントの一環として、講演者の話を聞く。あげます:の内容について知っている。の代表者、発表者.
MVC:コントローラです。
コントローラが作成されたアクセスに基づく一部のイベント。コントローラを作成し、適切な見との相互作用のモデルさを設定します。をあげた:コントローラ作成-管理の見;のスレーブにコントローラ部でします。のつながりコントローラ部でします。
MVCモデル(ビューコントローラー)
入力はコントローラ初のではない。この入力からユーザーとの交流のページにも見えますが、から入力するだけで特定のurlへブラウザです。いずれの場合も、そのコントローラと接続をキックオフも可能です。が多対一の関係をコントローラる方は受付にお申し出くださいことになるので単一のコントローラーを選択で違った景色が描画される動作が実行されます。注一方の矢印からコントローラー活用したいのですが。これは、ビューを持たない知識を参考にコントローラ部でします。コントローラはパスのモデルでありな知識とデニースザメネースパークのモデルに渡されるものではなく、コントローラーだったんです。
MVP(プラモデルビューの発表者)
の入力が始まるのではない。あの一対一のマッピングとデニースザメネースパーク、関連する。の眺めを持参考に。講師のもと反応させるイベントトリガされるから、その意識に関す。プレゼンタビューを更新するのに要請行動を行うモデルのビューが設定されていないモデルに気が付いている。
詳 参考
多くの回答の質問があるのではないかと感じはもう単純な回答は明確に比較します。ここでの議論り上げたユーザが検索のための映画の名前でMVPやMVC app:
ユーザー:クリックをクリックし...
眺望:ただ?[MVP|MVC]
ユーザー:うにクリックし、検索ボタン...
眺望:Ok、ちょっと待ってくsec....[MVP|MVC]
( 眺望 の呼び出し 発表者|コントローラー … ) [MVP|MVC]
眺望:こんにちは 発表者|コントローラー, ユーザがクリックし、検索ボタンをはんは何か?[MVP|MVC]
発表者|コントローラー:こんにちは 眺望, ありがとうござい検索フィールドに検索語に関するページに表示すべき事は何か?[MVP|MVC]
眺望:あ...ここがお気に入りに登録する"ピアノ"[MVP|MVC]
発表者:感謝 眺望,...この間を探している検索フィールドに検索語を モデル, ご提示ください彼/彼女の進捗バーの[MVP|MVC]
( 発表者|コントローラー での呼び出し モデル … ) [MVP|MVC]
発表者|コントローラー:こんにちは モデル, よう試合はこの検索の期間とは何ですか。:"ピアノ"[MVP|MVC]
モデル:こんにちは 発表者|コントローラー, しょうが、チェック---[MVP|MVC]
( モデル がクエリーの動画データベース...)[MVP|MVC]
(しばら...)
-------------- ここでMVPやMVC開始を拡散---------------
モデル:このリストです 発表者, こちらではJSON"[{"name":"ピアノ教師の"年"2001年},{"name":"ピアノ"""年:1993}]"[MVP]
モデル:ある結果、 コントローラー.を生み出してい分野の変私のインスタンスを詰めていくのは結果です。その名前には"searchResultsList"[MVC]
(発表者|コントローラー 感謝 モデル との 眺望) [MVP|MVC]
発表者:コ待ち 眺望, により、リストのマッチング結果のために手配してパソナフォーマット:["ピアノ教師2001","ピアノ1993"].ください提示しなければならない、ユーザーが縦一覧です。てくださいhideの進捗バーの現在[MVP]
コントローラー:コ待ち 眺望, していた モデル 約された検索クエリ。というこのリストマッチングの結果、保存されてという名前の変数searchResultsList"の中にはインスタンス.することができます。てくださいhideの進捗バーの現在[MVC]
眺望:ご 発表者 [MVP]
眺望:ありがとうございます"コントローラー"[MVC] (現在の 眺望 が問そのもの:いつ、どのように現在の結果から取得します モデル ユーザー?の生産年の映画に来て最初または最後の...?であると考えられる垂直または水平方向けです。...)
場合にだって書いての記事を扱うアプリの建築パターン(MVC、MVP MVVP、クリーン建築,...)を伴うGithubレポ こちらの.でも、サンプル記述のための基本的原則です。
- MVP=Model-View-発表者
MVC=Model-View-Controller
- 本発表では。らの依存関係をモデルとも思わないドメインのオブジェクト)は、画面/ウェブページ表示などのおUIって行動する(講演者/コントローラー)
- 彼らはかなり類似のコンセプトに、フォークを初期化告/コントローラによって異なる味わいです。
- る無駄のない美しいデザインの違いは こちらの.もっとも特筆すべきであるMVCのパターンのモデルを更新します。
も注目を覚えるには、いろいろな種類がありMVPsしています。ファウラーが壊れたパターンを二つのパッシブビューおよび監理コントローラです。
使用時パッシブビュー、ビューは通常、実施細粒の界面特性のマッピングをより以下の直接のunderlaying UIウィジェット.例えば、いICustomerViewとまっていただいた皆様ありがとう名前とアドレスです。
実装のようになります:
public class CustomerView : ICustomerView
{
public string Name
{
get { return txtName.Text; }
set { txtName.Text = value; }
}
}
ご報告者のクラスに話すの"地図"です。このアプローチと呼ばれる"パッシブビュー"となります。のメリットは、見やすい試験が容易であり、また、移動の間にUIプラットフォーム(Web、Windows/ポます。に不利であることができなレバレッジのようなdatabindingる 本当に 迫力の枠組みのように コンポーネントのラインナップ や Silverlight).
第二味のMVPの監視コントローラです。その場合おう特性を持っていてというお客様、そして再び開発のUIウィジェット.にんについて考えることの同期およびマイクロ-管理の視、監督コントローラーステップ実行することができ、必要に応じて個別に、インスタンスcompled相互作用論理です。
第三の"味"のMVPはいうものでは別のパターン)のモデル(または言及されるモデル-ビュー-ViewModel).のMVPで"統合"は、M、Pを一つのクラスです。お客様のオブジェクトにおUIウィジェットはデータ行があるかもしれません追加UI-spesificといった分野"IsButtonEnabled"、"IsReadOnly"など。
と思い最高の資源がその場で発音を確認することがUI建築のシリーズのブログの投稿を行わせた大人っぽいミラーで の構築に自分の運転台シリーズテーブルの内容.彼はすべてのものの風味MVPたはC#のコードに実施している。
またbloggedのデビュー-ViewModelパターンのSilverlightの上で YouCard再訪:実施のViewModelパターン.
Model-View-Controller
MVC パターンは、建築のソフトウェアアプリケーションへで個別のアプリケーションロジック三部品、モジュール化の推進やすさとの連携および再利用しています。ないようにするためには用途によって、より柔軟に歓迎し、繰.で分離への応用には、次のコンポーネント:
- モデル データの取り扱いについては、ビジネスロジック
- コントローラ を取り扱うためのユーザインタフェース応用
- 眺望 取り扱いにグラフィカルユーザインタフェースオブジェクト発表
こもう少し明確にし、もう単純なショッピング一覧アプリです。すべてまたはリストの氏名、数量および価格の商品を購入する必要があります。下まつどうすればよいのか何らかの対策はこの機能を使用MVC.
モデル-ビュー-発表者
- の モデル のデータが表示されますのビュー(ユーザーインターフェイス)
- の 眺望 から構成されるインタフェースを表示するデータをモデル)ルートユーザーのコマンド(イベントの発表を行います。の見通常は参照する。
- の 発表者 は、"中-man"のコントローラMVC)への参照、ビュー、モデルです。 ごとの単語"モデル" は誤解を招きます。であるならどうきくのがいいですか ビジネスロジックを取得しますまたは操作モデル.たとえば、次のようになります。またデータベースの保存ユーザーはデータベーステーブルやビューしたい表示のリストをユーザーの発表者が参照するデータベースのビジネスロジックのようなDAO)からの発表者はクエリの一覧をユーザー
を確認したい場合には、試料を簡単に実装でご確認ください この githubポスト
コンクリートのワークフローの照会、リストを表示するユーザーのデータベースからこの仕組みは以下のとおりです。
何 差 との間 MVC や MVP パターン?
MVCパターン
コントローラーに基づく行動できる一望できるようにしてくれます。
を目的として評価されるかを決定するビューを表示(フロントコントローラーのパターン)
MVPパターン
ビューは疎結合のモデルです。講師の担当との結合モデルにします。
簡単体テストまでの相互作用によりインターフェース
通常、ビューの発表の表示にします。複雑な意見が多願いいたします。
それぞれのアドレスの異なる問題もありますが組み合わせて以下のようなもの
もあります 完全な比較MVC MVPとョら
これらの枠組みを別の懸念は、例えば、対象となる相互作用データソース(プラモデル)、アプリケーションロジックはこのデータを最大限に活用できる情報(コントローラー/ジが表示コードすることができました。一部のモデルでも利用できるデータソースへの高レベルの抽象化です。良い例が、 MVC店頭プロジェクト.
がディスカッション こちらの に関しての違いをMVC対MVP.
の区分はMVC用伝統的にとデニースザメネースパークのコントローラとの交流のモデルがない。
MVPデザインの報告者のアクセスのモデルとしたもの。
とはいえ、ASP.NET MVCはこれらの定義は、MVPの枠組みでのコントローラにアクセスモデルを生成するためのビューに入っていないプログラムだけを表示変数はコントローラー).
にそのデータベースを利用しながらASP.NET MVCの区別からのMVP、チェックアウト このミックス発表 スコットHanselman.
両方のパターンをしようと別に、ビジネスロジック、デカップリングビジネスロジックからUI面
建築MVPはページコントローラーに基づくアプローチが簡単にフロントコントローラーベースアプローチを用いる。ということでMVPの標準webフォームのページでの生活サイクルは強化による抽出のためのビジネスロジックからコードを作ります。つまり、ページのサービスhttpます。つまり、MVP厚でwebフォーム進化の種類も充実。MVCその他の手の変化を完全にゲームが要請が遮断をコントローラの最後のトークセッションページが読み込まれ、ビジネスロジックが実行されその結果のコントローラー処理のデータだけ捨てのページの"ビュー") その意味では、MVC見(少なくとも私には多くの指導コントローラー風味のMVPの強化とルーティングエンジン
の両方をTDDとしてのマイナス面とupsides.
決定方法を選択しまぁばに基づかなければならない多くの時間を一つの投資ASP純webフォーム型トしたりすることができます場合を考える人もwebフォーム、私はあなたがMVP.いを感じない心地などのページでの生活サイクルなどMVCき方はこちらをご覧ください。
この他ブログリンクとアルガルベカップではこれまで詳細は、今後の
また、両MVPやMVC、そして開発者が、技術的な差異のパターンのためのMVPに厚であり関連性の採用は他の何よりも優先されます。
もし僕の作業チームでした背景のwebフォーム開発スタイルで導入しやすいMVPによMVC.すると思うのでMVPこのシナリオには、迅速です。
私の経験から言えることでチームからwebフォームへのMVPとからスタートし、MVPを簡単に比較的容易で移動からwebフォームに簡単にします。
まちへのリンクシリーズの記事を友人公約MVPやMVC.
http://www.qsoft.be/post/Building-the-MVP-StoreFront-Gutthrie-style.aspx
でMVPのビューを描画データからの報告者を引き付け、準備/ジ組版からのデータモデルをMVCのコントローラが描くデータモデルからの設定により、また、を倒して離すと、そのビュー。
でMVPできるシングルビューと複数の発表者は、単一の発表者と異なる複数の。
MVP通常は、なんらかの拘束力のある枠組みの不可欠なネットワークコンポーネントのラインナップ結合の枠組みは様々な結合の枠組み、HTML5/Java.
この枠組みのUI/HTML5/ポは、何件の発表者各UI要素のディスプレイ、なんとなく結合するための発表は、ビューの特性を知っていて、描画データからどのように設定した値が変化したUIの利用に最適です。
そのため、例えば、モデルは、その者が何らかの車なのか、公開の車の性質(年メーカー、シートなど) する方は受付にお申し出くださいのであることを知りテキストフィールドと呼ばれる自動車メーカーのニーズに表示者のメーカーの物件です。
その結の多くの異なる種類の報告者は、全てメーカーの物件ですの飛行機の中で、電車やりがとうのはない。のビューを描画データからの報告者-などを実装する合意されたインタフェース。
このバインディングの枠組みた場合、ストリップで、これは実際のコントローラ:-)
できるMVPとしての進化MVC.
MVCは、その問題は、通常はそのコントローラー当たります。コントローラは、先番号は予約確認通知に設定視野A.まったことしたいビューを表示データモデルB、必要なコントローラーは、知モデルB、または必要なコントローラで受けるオブジェクトとのインターフェースのようなMVPのみなバインディング、レジュメを書き直す必要があるUIの設定コードをコントローラー B.
結論-MVPやMVCの両方を切り離しのUIパターンがMVP通常の使用のバインディングの枠組みであるMVCました。●このようにMVPはより高いレベルによMVC、ラッパーパターン以上のMVC.
拙短ビュー:MVPは大きなスケール、MVCた。とMVC、何かを感じるV、Cはあるが、双方の不成分と直接結M、必然的に落ちたこのため短いスケール、UI管理ベーストセット。このレベルでの粒度MVPとなった。が、逆にgo大きな規模、適切なインタフェースが重要なのは、同じの一義的割当ての責任がMVP.
一方、この規模のルールの親指、重量の少ない場合の特性の好きなあのような関係の部品のようなファイルがメールで、できやすく実施MVC以上のMVP.
はありま この 素敵なビデオからのおじさんのボブが彼を簡単に説明していMVC&MVPです。
IMO MVPは改良版のMVCが基本的に別の何かショー(データ)かどうかを示にすることができました。発表者を含むえー、ビジネスロジックのUI、暗黙のうちに課せらどのようなデータの提出が必要となります、くと見込んでいますが、ダムビューモデルです。時にデータの表示は、単にプラグインお(おそらく同じidの)アダプタセットに関連するビューの分野で利用者の視モデルに最小限のコードを導入して(応用セッター).この本は自分の力を試せまUIビジネスロジックに対し多くの人々に様々な景色のような表示項目水平リストまたは縦一覧です。
にMVC、お話を通じてインタフェース(境界線)接着剤で接着しております。コントローラはプラグインは当社建築ではこのような制限を課う。その意味で、MVPは、MVCコンセプトの見ているプラグイン可能な、コントローラ間のアダプタ.
武器agiは、dexで下がらないboxerぐります。
最も単純な回答はどのようにビューと相互作用のモデルです。でMVPのビューの発表者は、行為としての仲間とデニースザメネースパークモデル、入力からの眺めは、データモデルから、それをもとに、ビジネスロジックは、最後に更新する方は受付にお申し出くださいにMVCモデルの更新のではなく、直接帰を通じてコントローラ部でします。
MVP
MVPはデビュー。このた絵画2007年初めのマイクロソフトの導入スクのwindowsアプリケーション.
講師としての活動を監督役割を果たMVPるbindingビューイベント、ビジネスロジックからのモデルです。
ビューイベントに結合する行がプレゼンテーション、ビューインターフェース。
ビューのイニシエータはユーザの入力し、その代表者へのイベントの発表者、発表者を扱うイベントとのバインディングからのデータを取得します。
メリット: ビューが有するだけのUIなロジック 高レベルのtestability
連結: ビット複雑な仕事があり実施できるイベントのバインディング
MVC
MVCはモデル-ビュー-コントローラです。コントローラを担うモデル作成およびレンダリング景気結合モデルです。
コントローラのイニシエータで決定するビューを描画する
メリット: を重視し単一の責任の原則 高レベルのtestability
連結: 時には過負荷のためのコントローラをだしてみを描画するのに複数のビューは同じコントローラです。