Question

Existe-t-il une collection de directives de conception couramment agrandies pour séparer les classes de modèle des classes View / Controller dans une application Java Swing? Je ne suis pas si préoccupé par le fait que la vue / contrôleur ne sait rien du modèle comme l'inverse: je voudrais concevoir mon modèle pour n'avoir aucune connaissance de quoi que ce soit dans javax.swing. Idéalement, il devrait avoir une API simple, ce qui permet d'être conduite par quelque chose d'aussi primitif qu'une CLI. Ce devrait être, vaguement, un «moteur».

La communication d'événements GUI au modèle n'est pas trop difficile - les interprètes d'action peuvent appeler l'API du modèle. Mais qu'en est-il du moment où le modèle apporte ses propres modifications d'état qui doivent être reflétées à l'interface graphique? C'est à cela que sert "l'écoute", mais même "être écouté" n'est pas entièrement passif; Il faut que le modèle soit au courant de l'ajout d'un auditeur.

Le problème particulier qui m'a fait réfléchir implique une file d'attente de fichiers. Du côté de la GUI il y a un DefaultListModel Derrière un JList, et il y a des trucs GUI pour choisir les fichiers dans le système de fichiers et les ajouter à la JList. Côté modèle, il veut retirer les fichiers du bas de cette "file d'attente" (les faire disparaître du jlist) et les traiter d'une manière ou d'une autre. En fait, le code du modèle est déjà écrit - il maintient actuellement un ArrayList<File> et expose un public add(File) méthode. Mais je ne sais pas comment faire fonctionner mon modèle avec la vue / contrôleur sans des modifications lourdes et spécifiques au swing au modèle.

Je suis très nouveau dans la programmation Java et GUI, après avoir toujours fait la programmation "Batch" et "Back-end" jusqu'à présent - d'où mon intérêt à maintenir une division stricte entre le modèle et l'interface utilisateur, si c'est possible et si cela peut être enseigné.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top