2010-06-22 3 views
1

Quelques astuces moins connues pour implémenter une structure MVC faiblement couplée dans une application de bureau non triviale (par exemple ayant au moins deux niveaux de vues/contrôleurs et plus de un modèle)? Déclarer les gestionnaires d'événements dans vos interfaces (important pour les vues).Trucs/astuces pour l'architecture de MVC dans une application de bureau non triviale

+0

Quel langage, cadre et/ou environnement de développement utilisez-vous? –

Répondre

1

Utiliser des interfaces.

Beaucoup. J'aime utiliser le style "IDoThisForYou" (même dans un langage où ce n'est pas idiomatique) car une interface représente un rôle qu'une autre classe peut utiliser.

Faire les contrôleurs chargés de contrôler l'interaction

Les contrôleurs contrôlent l'interaction entre les objets de domaine, services, etc.

utiliser des événements pour transmettre des informations entre les contrôleurs

Que chaque contrôleur qui a besoin d'informations pour s'inscrire à l'événement. Utilisez une interface.

Ne pas mettre des informations de présentation sur les objets de votre domaine

Au lieu de cela, permettre au contrôleur de créer un modèle de présentateur ou de la vue qui a les informations dont vous avez besoin. Cela ne comprend pas "ToString()". Si vous êtes dans une langue sans héritage multiple, vous pourriez vous retrouver avec un peu de duplication entre les présentateurs. C'est OK - la duplication est meilleure que le couplage, et l'interface utilisateur change beaucoup de toute façon.

Ne mettez pas la logique dans votre IUG

Au lieu de cela, le contrôleur permet de créer une mdoel de présentateur ou de la vue qui a les informations dont vous avez besoin. Cela inclut les épaves de train comme "MyAnimal.Species.Name" - le rendre "SpeciesName" à la place.

Testez

manuellement. Il n'y a pas de substitut. Les tests d'unité et d'acceptation vont un long chemin, mais il n'y a rien de tel que de lancer l'application et d'utiliser le désordre que vous avez écrit pour découvrir à quel point c'est compliqué. Ne le transmettez pas aux QA sans y aller vous-même.

Oh, et ne moquez pas les objets de domaine dans les tests unitaires. Ça ne vaut pas le coup. Utilisez un constructeur.

1

De cette façon, vous pouvez coupler de manière lâche la gestion des événements qui est gérée par le contrôleur. Vous devrez peut-être utiliser InvokeRequired lorsque vous travaillez avec la vue si votre application est multithread.

Questions connexes