2012-02-14 5 views
0

J'écris une grande application webforms et j'utilise le modèle MVP. L'application est une demande de prêt et l'utilisateur doit répondre à beaucoup de questions. Mon problème est que sur une page il peut y avoir jusqu'à 15-20 questions et leur visibilité dépend des réponses précédentes.MVP Design dilemme

Ainsi, chaque fois qu'un utilisateur répond à une question «A», la vue peut appeler SetVisabilityB() dans le présentateur qui gère l'affichage ou le masquage de la question «B». Jusqu'ici tout va bien, mais la réponse à la question "B" montre/cache la question "C", et quand l'utilisateur change son opinion sur la question "A", la vue doit appeler SetVisabilityB() et SetVisabilityC(). Je trouve cela un peu désordonné, puisque j'ai maintenant des endroits où j'ai besoin d'appeler 5-6 différentes méthodes SetVisability pour une question ..

Dois-je utiliser une méthode SetVisability "globale" qui met à jour la visibilité pour toutes les questions pour chaque réponse ou existe-t-il une meilleure façon de résoudre ce problème?

Répondre

1

Mon principal problème avec votre approche est que votre vue contient la logique métier pour afficher et masquer les questions. La vue devrait être aussi bête que possible et votre présentateur devrait prendre ces décisions.

Je voudrais avoir la vue signalant au présentateur qu'une question a été répondue et passer le numéro de la question. Le présentateur peut masquer ou afficher les questions au besoin. Cela peut prendre la forme d'une déclaration de cas, ou si les choses deviennent bêtement compliquées, vous pouvez passer à l'utilisation d'une machine d'état.