2009-06-18 14 views
4

私はMVPプロ​​ジェクトを書いています。ビューは、私のIViewインターフェイスを実装しているWinFormです。 私はコードを見直しながら、私ができるところで改善し、ビューとプレゼンターのやり取りに関するあなたの考えを聞きたいと思います。あなたの意見では、どれがベストプラクティスですか?パブリックメソッドまたはビューイベントを購読する

  1. ビューを使用するためのプレゼンタークラスのメソッドを公開する。 (つまり公開する)。
  2. プレゼンターがViewクラスによって生成されたイベントを受信するのを待ちます。

たとえば、私のMVPはシリアルポート経由で通信するサービスを使用します。リモートデバイスに接続するには、私のビューはPublic PresenterメソッドConnect()を呼び、適切なサービスメソッドを呼び出します。

Connect()イベントを発生させ、発表者にそれを聞かせる方が良いでしょうか?

答えて

6

一般的に私は、ビューがプレゼンターに依存し、プレゼンターがモデルに依存するように作業します。つまり、同じモデルを複数のプレゼンターが使用でき、同じプレゼンターを複数のビュー(異なるUIレイアウト、WinformsとWebなど)で使用できます。これを容易にするために、ビューはプレゼンター上でパブリックメソッドを呼び出し、データが変更されたときにプレゼンターからのイベントを聞きます。

初心者ユーザーとエキスパートの2つのビューを持つインターフェイスを想像してみてください。エキスパートコマンドのサブセットを示す初心者の表示があります。同じプレゼンターがこれらのビューの両方に使用されている場合、プレゼンターはそこにいる必要があるため、初心者のビューはすべてのエキスパートコマンドのイベントを公開する必要があります。一方、プレゼンターはすべてのエキスパートオプションのメソッドを公開することができ、初心者のビューはそれらを呼び出すことは決してありません。これは、ビューもプレゼンターも未使用の機能を実装していないことを意味します。

+0

同意します!プロジェクトでオプション2を長時間使用した後、オプション1(発表者へのビューコールを持つ)に変更しました。複雑さが少なく、作業が少なくて済みます。 –

+0

http://stackoverflow.com/questions/8851933/event-bubbling-and-mvp-asp-netにお答えください。 – Lijo

0

私がここに従うのは、 "プレゼンターの公開メソッドはパラメータなしでなければなりません。ビューオブジェクトは、パラメータのないプレゼンターメソッドにのみアクセスする必要があります。また、ビューはプレゼンターが購読できるイベントを定義できます。パラメータを渡す必要はありません。 。慈悲とコメントに開放されています。

関連する問題