Implémentation du pattern mvc

Soyez le premier à donner votre avis sur cette source.

Vue 9 655 fois - Téléchargée 1 296 fois

Description

Ce code fournit les classes nécessaires pour implémenter un pattern MVC proprement. J'ai ajouté un .jar qui peut être mis dans le buid path de vos projets ainsi qu'un diagramme de classes et un diagramme de séquence permettant de comprendre le fonctionnement de ce pattern.

Conclusion :


Si vous pensez qu'on peut améliorer ces classes, je suis preneur. N'hésitez pas à me faire part de vos remarques.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
293
J'ai utilisé ces classes pour deux projets et maintenant, avec le recul, je me dis que cette source est assez contraignante à mettre en oeuvre. Elle impose de créer de nombreuses interfaces pas toujours utiles et ne propose que des controleurs avec une seule méthode (utilisée par défaut).

Par contre, si on travail avec des personnes qui maîtrisent mal le découpage MVC, cette source apporte un vrai plus parce qu'il suffit détendre les classes pour mettre en oeuvre le design pattern et ca, c'est un vrai avantage.

Alors a utiliser surtout pour les développements web (swing est assez peu adapté) avec des pages assez simples et des équipes inexpérimentées peut apporter un plus.
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
293
Il n'y a pas de modèle MVC classique, mvc signifie juste avoir trois couches indépendantes. Selon tes besoins, il faut adapter ton implémentation, le fait que le modèle notifie la vue est définie dans le GoF, ca permet de synchroniser toutes les vues de ton modèle. Par contre, oui, ca peut poser problème si ce n'est pas ce que tu souhaite, et là, tu peux le gérer dans le controleur.

"Le système de notification est un peu restrictif. Si j'ai 2/3 textbox et pas mal d'éléments graphiques; la vue va, à chaque modification d'un élément, rafraîchir tout les élément." Non pas forcément, tu peux très bien créer une classe qui éténd AbstractView et qui contient un JPanel qui contient un ensemble d'éléments et ensuite l'ahouter à une JFrame, de cette manière, cette classe aura un controleur pour elle seule et la vue en entier ne sera pas remise à jour.

Mais il est vrai que cette structure est surtout commode pour les applications web qui sont assez peu dynamiques, et elle peut être vraiment contraignante pour les applications en Swing.
Messages postés
18
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007

Après avoir préparer mon implémentation, voici 2-3 réflexions:
Ce n'est pas le modèle MVC classique: La vue implémente le contrôleur (et non l'inverse) et la vue est mise à jour par le modèle (normalement optionnel, c'est le contrôleur qui devait le faire)
Ce qui fait que la vue est mise à jour dès que le modèle change; ce qui peut poser des petits problème. Le contrôleur devrait pouvoir modifier le modèle sans nécessairement mettre à jour la vue dans le cas d'opération complexes/résultats intermédiaire.
Pour moi les fonctions actionPerformed() devraient être codées dans le contrôleur (i.e le contrôleur implémente la vue, et les listeners avertissent le contrôleur des actions).
Le système de notification est un peu restrictif. Si j'ai 2/3 textbox et pas mal d'éléments graphiques; la vue va, à chaque modification d'un élément, rafraîchir tout les élément.
La vue pourrait implémenter le modèle. Dans la fonction update(), la vue se sert du IObservable pour récupérer les valeur du modèle. Je trouve ça un peu tordu.

Après, tout ça n'empêche pas que ton implémentation est tout à fait fonctionnelle.
Pour pallier à ce problème de mise à jour globale, j'essaye de faire un système de MVC hiérarchisé. I.e un MVC principal où chaque vue, modèle et contrôleur implémentent chacun respectivement une vue, modèle, contrôleur représentant un groupe d'éléments indépendant. Et ça fonctionne plutôt bien (reste à voir le cas où ces éléments ne sont finalement pas réellement indépendants :-)
PS: si tu veux une idée de ce que je veut faire, je réimplémente cette application: http://www.javafr.com/codes/MAHJONG-VRAI_43524.aspx
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
293
Si tu as besoin d'aide sur l'utilsation, tu peux laisser des messages ici, je n'ai pas tellement détaillé l'utilisation

Julien
Messages postés
18
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007

Simple et efficace. Exactement ce que je suis venu chercher :-D
Je vais m'en servir de base pour une petite app.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.