3

J'ai récemment posé une question sur stackoverflow sur le MVC: Can the MVC Design Pattern/Architectural pattern be used in Desktop Application Development?modèle MVC vs Observer

Sur la base de la réponse fournie, j'ai commencé des recherches sur la façon dont cela serait mis en œuvre sous une forme d'application Windows. Je suis tombé sur l'article CodeProject suivant: http://www.codeproject.com/KB/cs/model_view_controller.aspx

Dans les commentaires ci-dessous l'article, certains utilisateurs soutiennent que (bien que ce soit un bon article), il est en fait le modèle d'observateur. Tout d'abord, mais moins important, la question est de savoir si quelqu'un est d'accord ou pas avec cela et pourquoi? En ce qui concerne la deuxième question plus importante: J'essaye de construire un petit programme de liste de tâches dans .NET. Ce sera très petit et je l'espère rapide. En général, quelle serait la meilleure architecture pour un tel projet? Le motif Observateur ou le motif MVC? Ou un autre motif?

Merci

+0

@Mark: Merci d'avoir corrigé le titre. Je ne peux pas croire que je n'ai pas vu ça! :-) –

+1

Ces utilisateurs ne savent pas quel est le modèle d'observateur. – mmcdole

Répondre

3

(L'article n'est pas un exemple de MVC AFAIK pour la simple raison qu'il n'y a pas de contrôleur .. il est plus proche de données .net contraignantes si vous me demandez.)
MVC est pas le modèle d'observateur . MVC est préoccupé par la séparation des préoccupations. Le modèle, la vue et le contrôleur font tous un travail et font confiance aux autres pour faire le leur. D'une certaine manière, le contrôleur «dirige» la vue et lui indique comment réagir à un changement (Pure MVC). Le contrôleur interagit également avec le modèle de manière appropriée (dont la responsabilité est d'encapsuler des données et d'appliquer des contraintes/règles). Dans MVC, le contrôleur est le point de départ de toutes les activités - l'entrée utilisateur est d'abord reçue par le contrôleur. Cependant, il existe des variantes comme MVP, où l'utilisateur est reçu en premier par la vue, puis poussé/synchronisé avec le présentateur.

Le modèle Observer est l'endroit où vous voulez regarder un autre objet pour un changement d'état. Donc, vous pouvez dire que les événements .net suivent le modèle d'observateur

Si c'est vraiment minuscule, oubliez les motifs et il suffit de le coder sans vous soucier de l'architecture ...Suivez les heuristiques/principes de bonne conception

Si vous rencontrez des problèmes de conception ou il commence à faire tout désordre, puis apporter les bataillons de motif.

+0

Pour moi, c'est la vue qui «observe» le contrôleur (le contrôleur avertit la vue quand quelque chose se produit) et lui indique comment réagir à un changement. –

+0

@DranDane - correct. Dans MVC, le contrôleur est l'initiateur de tout. Dans MVP, le présentateur observe la vue. Les actions de l'utilisateur sur la vue déclenchent les procédures. Actualisé. – Gishu

1

Je conviens que l'article n'est pas MVC. Son plus d'une mise en œuvre du modèle d'observateur. Le modèle d'observateur dans .NET peut être implémenté en utilisant des événements, ce qui était le cas de l'article. MVC requiert une classe de contrôleurs qui contrôle l'action à exécuter lors d'une requête effectuée à partir du modèle ou de la vue. L'application de MVC est une très bonne pratique de programmation car elle favorise grandement la séparation des préoccupations. Vous aurez une application plus propre, plus extensible et plus testable avec mvc. Un autre point à noter, vous pouvez toujours appliquer un modèle d'observateur à une application MVC. Ils ne se contrediront pas.

===========

Pour répondre à votre deuxième question: quel modèle est le meilleur? Je pense que la façon dont vous abordez le développement de logiciels est plutôt fausse. Vous ne devriez pas trop vous inquiéter de ces choses, pas avant d'avoir rencontré un problème. par exemple. Si cet objet change d'état, j'ai besoin que ces autres objets réagissent, donc j'implémenterais un modèle d'observateur.

Si j'étais vous, je commencerais par le modèle d'abord, puis prend des choses à partir de là.