Bonjour à tous,
Ca fait un petit moment que je code en Java et j'essai de coder de plus en plus modulaire.
Actuellement je programme un petite formulaire dont les champs ont dépendent parfois les un des autres. A chaque modification de la Vue, le Modèle et la base de donnée changent.
En gros mon programme à une structure MVC, avec un DAO fait maison.
Considérons que tous les champs du formulaire sont des JFormattedTextField et qu'on ne manipulera que des types double, le modèle a 2 champs double et le reste sont des méthodes qui retourne des doubles (après avoir fait quelques calculs). Jusqu'ici tout va bien.
J'aimerai que lorsque je modifie une case de ma vue, cela change le modèle, et que le reste du formulaire soit réactualisé.
Voila comment j'ai procédé pour le moment :
- J'ai créé une interface Observable et Observer (celle de Java ne me plaisait pas juste parce qu'elles sont abstract, pb d'héritage sinon)
- Mon modèle implémente l'interface Observable, et dans chaque "setter" il appel un "notifyObservers()"
- Au niveau de la vue, je fais en sorte a ce qu'elle peut être remplacé par une autre vue, donc rien de spécial, on va dire que les champs sont juste en public
- Et maintenant, la ou je bloque, le contrôleur. Il prend en paramètre mon modèle et ma vue. Supposons que j'ajoute un actionListener à chaque JFormattedTextField, et que je dis "si lui change, alors tu change le modele", alors le modele fera un "notifyObservers()" et le controleur (qui devra s'ajouter comme observer) recevra l'evenement dans sa méthode et réactualiser tous les champs.
Ca fait pas un peu lourd tout ca ?
J'suis preneur de tous les conseils, j'essai au max d'utiliser les designs patterns mais des fois j'me dis que sur des projets de petites tailles c'est un peu sortir la grosse artillerie.
Merci
Partager