web-dev-qa-db-ja.com

Model View Presenterとは何ですか?

モデルビュープレゼンターパターンとは何かをできるだけ簡単に説明してください。 Model View Controllerとの違いは何ですか?どちらが最適ですか、それともどの目的ですか?

56
bluediapente

Martin Fowlerには、UIデザインパターンに関するページがあり、MVC、MVP、その他のパタ​​ーンを定義してから説明しています。

http://martinfowler.com/eaaDev/uiArchs.html

違いを要約すると、MVCのコントローラーはUIをより細かく制御し、イベントを処理しますが、MVPのプレゼンターはより受動的で、UIを介して情報を表示するだけです。

一般に大きな違いはなく、多くの場合、それらの間の線はぼやけています。

28

Model View PresenterとModel View Controllerは、どちらも同じ「懸念の分離」問題を解決しようとします。

主な違いは、モデルビューコントローラー(MVC)が、ビューと何らかのモデルの間のカップリングで実装されることが多いことです。これにより、特定のビューは特定のオブジェクト(モデル)の視覚化を提供することを特に目的としています。

モデルビュープレゼンターパターンでは、通常、プレゼンターがモデルの操作を担当し、何らかの視覚化を形成するために必要な情報を決定します。

この図では、矢印は依存関係を表しています。

MVC and MVP dependencies

通常、ASP.NET MVCフレームワークについて議論するときにこのパターンの議論が聞こえ、MVPパターンとASP.NET WebFormsでの実装に関する情報に出くわします。私の経験では、WebForms自体がMVPパターン化フレームワークであると信じられていることがよくあります-これは真実ではありません。ただし、WebFormsを使用すると、MVPパターンの実装が非常に簡単になります。これに最適なリソースは、Patterns and PracticesチームのWeb Client Software Factoryを調査することです。

CodePlexサイト: http://www.codeplex.com/websf

トピックを網羅した素晴らしいスクリーンキャスト: http://www.pnpguidance.net/Screencast/MVPBundleScreencastWCSFModelViewPresenterDesignPattern.aspx

58
apiguy

ファウラーは、MVPを2つのパターンに分割します。監督者プレゼンターとパッシブビューです。
Aviad Ezraには、このトピックに関する良い記事があります http://aviadezra.blogspot.com/2008/10/model-view-presenter-design-pattern.html
デスクトップではMVPの方が優れていると思います。デスクトップでは、Modelにイベントを発生させる機能があるため、MVCはWebアプリ用です

5
Anton Setiawan

Dolphin SmalltalkはMVC実装を使用していましたが、その後MVPに移行しました。

ここに テクニカルペーパー があります。

IBMのTaligentシステムもMVPを使用しました-何とその理由を説明します here

3
Dafydd Rees