2008-10-11 9 views
1

Quelle est la meilleure répartition des responsabilités lors de l'utilisation d'une grille virtuelle et du modèle MVP dans une application WinForms?Modèle - Vue - Présentateur avec Virtual Grid

dont:

  1. Obtenir callbacks de la grille des mises à jour de cellules modifiées par les utilisateurs
  2. Callback de la grille pour définir le style et la valeur d'une cellule donnée une ligne et la colonne

Répondre

1

Les responsabilités exactes dans les nombreux modèles qui sont appelés Model-View-Presenter varier. Principalement, ils varient sur la façon dont le contrôle est exercé sur la vue par le présentateur. Martin Fowler a une discussion approfondie d'un certain nombre de variantes différentes dans son chapitre sur GUI Architectures, ça vaut bien une lecture.

Jetez un oeil à Presenter First car il traite des adaptateurs et des responsabilités en profondeur.

Les deux Passive View et Supervising Controller valent la peine d'être regardés.

modèle

(ou modèle de domaine) == représentation logique des entités impliquées dans le système, y compris leur état et le comportement

présentateur == écouter les événements de la vue (et peut-être le modèle) et le service de ces demandes, le modèle convertir types dans les types de vue (vue passive), c'est vraiment plomberie pour cacher la vue et le modèle les uns des autres. Réagit au stimulus de l'utilisateur.

vue présentation ==: la représentation visuelle du modèle que l'utilisateur peut interagir avec, collecter les entrées utilisateur

Vos questions spécifiques autour des callbacks et obtenir le style de cellule de la grille sont tous les deux va impliquer les événements de manipulation de vue à partir de la grille et en ramenant les événements au présentateur pour demander des actions ou extraire des données du modèle. Ceci est parfait pour le rappel lorsque le contenu de la cellule est mis à jour (ceci doit être publié sur le présentateur afin que le présentateur puisse valider le changement dans le modèle et effectuer le changement dans le modèle).
Pour le style de cellule, je pense qu'une sorte d'adaptateur dans la vue peut avoir besoin de traduire l'état du modèle (récupéré via un événement de la vue vers le présentateur) en informations de style de cellule de grille. Cela pourrait arriver dans le présentateur mais je préférerais personnellement que le présentateur ne connaisse pas le widget dans la vue.

0

Si Je vous comprends bien, la grille fait partie de l'implémentation de la vue et n'est pas visible par le présentateur. Dans ce cas, le présentateur ne devrait pas avoir besoin de savoir comment les données sont affichées, mais seulement comment les fournir.

Je créerais probablement une classe d'assistance, un adaptateur de quelque sorte, avec lequel la grille communique. La grille ne voit que cette aide, idem pour la vue.

La collaboration serait quelque chose comme:

grille < - aide < - Vue < -> présentateur

Questions connexes