1

パッシブビューパターンを使用しています。ユーザーが新しいアカウントボタンをクリックします。ビューは、パラメーターなしのメソッド呼び出しを使用して、プレゼンターに責任を委任します。

問題は、複数のアカウントタイプがあるため、ユーザーは作成するアカウントタイプを選択する必要があることです。これを解決するにはどうすればよいですか?

  1. ビューから新しいフォームを作成し、必要な情報を取得して、プレゼンターが取得できるようにプロパティとして公開します。(これは、ビューにロジックが含まれていてはならないという概念を無視します)
  2. プレゼンターから新しいフォームを作成して使用します。(これは、MVPの全体的なポイントを無視して、プレゼンターをフォームに直接結び付けます)
  3. 新しいフォームを別の場所に作成し、コンストラクター引数としてプレゼンターに渡します...またはビュー。
  4. それを忘れて、アカウントタイプごとに新しいボタンを追加してください。(アカウントの種類はいくつかあり、UIが乱雑になりますが、そうなります。)
  5. 私はこれを間違った方法で行っているので、私のデザインを再考する必要があります。(この場合、正しい方向に少しずつ動かしていただければ幸いです。)
4

4 に答える 4

1

アカウントタイプを取得するために、おそらく別のプレゼンターとビューのペアを作成します。次に、

  • プレゼンターが他のプレゼンターに直接電話して、新しいフォームを表示するか、
  • プレゼンターは、モデルに適切なアカウントタイプを要求します。モデルは、どこか別の場所に問い合わせる必要があることを認識しており、「アカウントタイププレゼンター」または「アカウントタイプモデル」を呼び出します。

あなたのプレゼンターが扱いにくくならない限り、私は最初の選択肢を選ぶと思います。

于 2009-06-26T14:26:27.013 に答える
0

私はMVPの専門家ではありませんが、デリゲートを使用してビューからアカウントタイプを取得することでこれを処理します。プレゼンターは、ビューでデリゲートを呼び出し、「アカウントタイプの選択」フォームを開き、ユーザーがアカウントタイプを選択してフォームを閉じると、選択したアカウントタイプを返します。

于 2009-06-26T14:15:04.167 に答える
0

アカウントタイプを選択するためのシンプルなインターフェイスについて話している場合、IMOはアカウントタイプの数に依存します。アカウントごとに新しいボタンを追加するだけです。ただし、アカウントタイプが多数ある場合は、可能なすべてのアカウントのリストを含むコンボボックスがあり、最初のアカウント(ユーザーが最初に表示するアカウント)は無効または選択されていないタイプです。また、「作成するアカウントの種類を選択してください」というラベルを追加し、ボタンを1回押すだけで、コンボボックスの値がモデルに送信されます。このように、ユーザーがアカウントタイプを選択せず​​にボタンをクリックするだけの場合、モデルはタイプを有効にし、問題をビューに返します(ビューはボックスを強調表示したり、テキストを赤くしたりできます)。これにより、ユーザーがアカウントタイプの選択を見逃すことを防ぐことができます。このアプローチにより、単体テストも容易になります。

記入する必要のある情報が異なるアカウントタイプごとに話している場合は、アカウントごとに異なるビューとプレゼンターが必要になります。(これは、ユーザーがアカウントタイプを選択した後に必要になるものです)

于 2009-07-02T02:36:21.110 に答える
0

これに対する私の解決策は、私が予想したものとは異なっていました。ユーザーがクリックしたボタンをDropDownMenuButtonに変更しました。次に、アカウントタイプの文字列リストを、ドロップダウンメニューに表示されるビューに渡しました。また、ドロップダウンメニュー項目のクリックイベントのイベントハンドラーを作成しました。これにより、パブリックプロパティがメニュー項目の名前で更新され、それ以外はすべてプレゼンターに委任されます。

プレゼンターは、公開されたプロパティからメニュー項目名を取得し、アカウントタイプ名をキーとして使用して、アカウントタイプのプライベートディクショナリでアカウントタイプを検索する必要があります。

于 2009-09-17T20:39:19.033 に答える