Le meilleur moyen pour une interface graphique Swing de communiquer avec la logique de domaine?

StackOverflow https://stackoverflow.com/questions/69927

  •  09-06-2019
  •  | 
  •  

Question

J'ai une logique de domaine implémentée dans un certain nombre de POJO. Je souhaite rédiger une interface utilisateur Swing pour permettre à l’utilisateur d’initier et de voir les résultats de diverses actions de domaine.

Quel est le meilleur modèle / framework / bibliothèque pour les communications entre l’UI et le domaine? Cela se résume à:

  • l'interface utilisateur pouvant convertir un geste de l'utilisateur en une action de domaine
  • le domaine pouvant envoyer des informations d'état / de résultat à l'interface utilisateur à des fins d'affichage

Je connais MVC comme un concept large et ai manipulé le modèle Observer (dont l'implémentation Java présente des inconvénients si je comprends bien), mais je me demande s'il existe une meilleure pratique acceptée pour ce problème?

Était-ce utile?

La solution

Définitivement MVC - quelque chose de similaire à cet exemple qui indique clairement sépare les choses. Le problème avec les exemples de Swing est qu’ils semblent montrer que le MVC travaille tous dans le domaine du swing, ce qui ne me semble pas correct

Autres conseils

MVC est fantastique pour un widget individuel. Cependant, cela devient un peu indiscipliné lorsque vous avez pages et formulaires avec beaucoup de widgets.

Une chose qui mérite d’être examinée (et je ne l’approuve pas, je ne l’ai pas encore utilisée, mais je viens de mettre en œuvre quelque chose de très similaire pour moi-même) est le Cadre de liaison de beans (JSR295 )

J’ai utilisé le modèle Observer (en utilisant AspectJ magique) avec quelques succès, mais j’ai constaté qu’à moins que vous ne fassiez attention, il devienne rapidement un cluster .. euhh .. flick?

Il est rapidement devenu difficile à gérer et extrêmement difficile à déboguer.

Modifier:

Pour approfondir un peu ma réponse, nous utilisions SWT , et non pas Swing, donc YMMV. . Nous avons essentiellement utilisé AspectJ pour relier le transfert de données des composants de l'interface utilisateur aux objets du modèle. Ces objets modèles étaient des POJO stupides.

La logique métier a été réalisée en "surveillant" les objets du modèle avec AspectJ et en activant l'événement requis s'ils ont changé. Ainsi, si vous modifiez une valeur dans une zone de texte, AspectJ se déclenche et copie cette valeur dans un POJO. Si ce champ de la POJO contenait un événement de logique métier qui puis était déclenché. Si cette logique modifiait n'importe quel POJO (et il le pourrait), AspectJ le remarquerait et copierait la valeur de ce dernier dans le composant d'interface utilisateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top