モデル-ビュー-仮想グリッドを備えたプレゼンター
質問
winformsアプリケーションで仮想グリッドとMVPパターンを使用する場合の責任の内訳は何ですか。
含む:
- ユーザーが変更したセルの更新時にグリッドからコールバックを取得
- 行と列が指定されたセルのスタイルと値を設定するためのグリッドからのコールバック
解決
Model-View-Presenterと呼ばれる多くのパターンの正確な責任は異なります。主に、発表者がビューに対してどの程度の制御を行使するかについて異なります。 Martin Fowlerは、 GUIアーキテクチャの章で、さまざまなバリエーションの詳細について議論しています。読む価値は十分にあります。
Presenter First をご覧ください。アダプターとその責任を扱っています。ある程度の深さ。
モデル(またはドメインモデル)==状態と動作を含む、システムに関与するエンティティの論理表現
presenter ==ビュー(および場合によってはモデル)からのイベントをリッスンし、それらの要求を処理し、モデルタイプをビュータイプ(パッシブビュー)に変換します。ユーザーからの刺激に反応します。
view == presentation:ユーザーが操作できるモデルの視覚的表現、ユーザー入力の収集
コールバックに関する特定の質問とグリッドセルスタイルの取得には、グリッドからイベントを処理するビューと、アクションを要求したりモデルからデータを取得したりするイベントをプレゼンターに返すビューが含まれます。これは、セルコンテンツが更新されたときのコールバックに最適です(プレゼンターがモデルの変更を検証し、モデルに変更を加えることができるように、プレゼンターに公開する必要があります)。
グリッドセルスタイルの場合、ビュー内のある種のアダプターが、モデルからの状態(ビューからプレゼンターへのイベントを介して取得)をグリッドセルスタイル情報に変換する必要があると考えています。これはプレゼンターで発生する可能性がありますが、個人的には、プレゼンターがビュー内のウィジェットの知識を持っていないことを好みます。
他のヒント
正しく理解できれば、グリッドはビュー実装の一部であり、プレゼンターには見えません。その場合、発表者はデータの表示方法を知る必要はなく、データの提供方法のみを知っておく必要があります。
おそらく、グリッドが通信するヘルパークラス、何らかのアダプターを作成します。グリッドには、このヘルパーだけが表示されます。ビューにも同じです。
コラボレーションは次のようになります:
grid <!> lt;-ヘルパー<!> lt;-ビュー<!> lt;-<!> gt;プレゼンター