2009-07-28 7 views
1

Je ne suis pas certain que j'ai la bonne architecture pour ce problème. Disons que j'ai un objet Personne qui a 1 ou plusieurs objets attributs associés. Pour l'interface, j'ai une liste d'objets Person, une vue Person, et un autre contrôle avec des pages d'onglet qui représentent chaque objet Attribute associé à cette personne. Comment une architecture MVC pourrait-elle être construite?MVC Architecture - Comment représenter les listes

Actuellement, j'ai un seul 'modèle' pour une personne qui a une liste de modèles d'attributs. J'ai un contrôleur pour la vue, et ensuite j'allais faire un contrôleur pour l'attribut AttributeView qui aurait des sous-contrôleurs pour chaque attribut attaché à chaque modèle d'attribut dans le modèle de personne ... Je pense que je peux gérer toutes les interactions appropriées avec cette architecture, mais je ne suis pas sûr que ce soit la meilleure implémentation. Cela semble-t-il raisonnable, ou y a-t-il une meilleure façon d'y remédier?

Merci!

Répondre

0

Si c'était moi, je ne voudrais pas avoir le contrôleur principal au courant des sous-contrôleurs pour les attributs; Je ferais cette connexion au niveau de la vue à la place. Vous auriez donc un PersonView qui sait comment construire AttributeViews (leur passant dans AttributeModels) - ou qui a un handle pour une fabrique qui le sait - et les AttributeViews sauraient comment construire AttributeControllers. Cependant, cela dépend un peu de ce que vous essayez de faire. Comme, avez-vous besoin d'être en mesure de valider/annuler les modifications apportées à un AttributeModel sans réellement valider ces modifications à la personne? Avez-vous besoin d'annuler les modifications apportées à la personne dans son ensemble? Si l'utilisateur sélectionne une personne différente dans la liste, avez-vous besoin d'effectuer une validation avant de valider les modifications ou de les inviter à enregistrer les modifications avant de changer de personne? C'est comme ça que le désordre est susceptible d'être.

+0

Cette deuxième partie est exactement où mon désordre est. Validation pour l'intégralité de l'objet Person. Jusqu'à présent, l'approche que j'ai choisie semble fonctionner correctement, mais nous verrons comment les choses finissent par s'arranger. Merci pour la réponse! – genki

+0

J'ai trouvé une architecture de validation basée sur les écouteurs qui fonctionne bien dans ce genre de situation - donc les attributs se valideraient, la personne écouterait les changements dans la validité de l'attribut et ferait une validation supplémentaire (par exemple des combinaisons d'attributs), et le contrôleur de liste écouterait les changements sur la personne. (Que la validation se produise sur les modèles ou les vues dépend si vous voulez valider les modifications non valides du modèle - ce qui fonctionne bien, mais dans ce cas, vous voulez travailler avec une copie du modèle plutôt que l'original.) –

+0

Cela semble à peu près juste. Je travaille définitivement avec des copies, essentiellement j'ai des objets stockés ('config') et ensuite les objets de modèles réels que j'utilise dans l'interface graphique, donc les changements au modèle ne sont pas réellement 'sauvegardés' tant qu'ils ne sont pas écrits sur le config. – genki

Questions connexes