2

「プレゼンターファースト」アプローチを使用したかった(プレゼンターは、コンストラクター呼び出しを介した依存性注入を使用して、コンストラクター内のビューとモデルに自分自身をアタッチします)。

私のフォームは、それぞれ独自のプレゼンターを持つ2つのユーザーコントロールを含む単一のMainFormですが、モデルを共有しているため、メインですべてのプレゼンターを作成し、FormMainからこれらのコントロールを公開するプロパティを使用して、関連するユーザーコントロールをプレゼンターに渡します。 、およびモデルの単一のインスタンスをすべてのプレゼンターに渡します。

static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

IDocumotiveCaptureView view = new DocumotiveCaptureView(); //this is the MainForm
IDocumentModel model = new DocumentModel(); //single model
IDocumotiveCapturePresenter Presenter = new DocumotiveCapturePresenter(view, model); //MainForm's presenter
IControlsPresenter ControlsPresenter = new ControlsPresenter(view.ControlsView, model); //ControlsPresenter - attached to the user control via view.ControlsView
IDocumentPresenter DocumentPresenter = new DocumentPresenter(view.DocumentView, model);//DocumentPresenter - attached to the user control via view.DocumentView)

Application.Run((Form)view);                                                         
}

このアプローチで本質的に悪いまたは間違っているものを誰かが見ることができますか?これは主観的なものかもしれませんが、私はMVPに非常に慣れていないので、フィードバックをお願いします。

4

1 に答える 1

3

それがあなたのために働くなら、もちろんそれは大丈夫です。MVPは宗教ではありません。もはや単一のパターンとは見なされません。現在、最も人気のある2つの解釈は、パッシブビューと監視コントローラーのようです。

あなたの場合の主な方法はあなたの 作曲ルートであり(Mark Seemanによる答えを検索してください)、それはあなたがしていることをするのに最適な場所です。しかし、それを行うのはそれだけではありません。

WinFormsのその他のMVPについては、WinFormsのModel-View-Presenterを参照してください。

于 2012-09-17T02:25:21.957 に答える