Bonjour,
Je rentre dans le vif du sujet pour lancer rapidement une discussion autour de mon problème. Pour faire simple, je vais prendre un exemple simplifié : disons que je développe un simulateur de radar avec des cibles mobiles affichées sur ce radar. J'aimerais bien pouvoir considérer ces cibles comme des objets graphiques à part entière :
- click droit -> affiche un menu et effectuer des actions sur ces cibles
- drag and drop en mode debug -> pour déplacer les cibles
- etc.
J'ai développé un modèle type M-VC. Dans le modèle j'ai une classe Radar qui représente l'espace aérien capté et une classe Cible qui répresente les avions détectés dans cet espace. Côté Vue-Controleur, j'ai une classe EcranRadar (un JPanel) qui représente le Radar et une classe Spot (un JLabel) qui représente une Cible. L'architecture est donc a priori très simple :
- un Radar est agregé de plusieurs Cibles (Vector<Cible> myTargets)
- un EcranRadar est agrégé de plusieurs Spot (Vector<Spot> mySpots)
- Radar est le Modele de EcranRadar; EcranRadar est Vue-Controleur du Radar
- Cible est le Modele de Spot; Spot est Vue-Controleur de Cible
J'aimerais savoir s'il existe des modèles de GUI (au sens Génie Logiciel ou même Design Pattern) tout faits pour gérer ce type de GUI finalement classiques pour de nombreuses simulations. Par défaut j'aurais eu tendance à faire du M-VC jusqu'au bout : chaque Spot recoit des messages d'actualisation de sa Cible et chaque Spot peut contrôler sa Cible, mais je vois au moins 2 pbs :
1) je crains que ce ne soit trop gourmand en ressources (il va y avoir plein d'échanges de messages pour chaque Cible, ne serait ce que pour actualiser leur positions à chaque pas de temps)
2) d'un point de vue conceptuel je trouve qu'il n'est pas logique qu'une Cible puisse avoir sa propre Vue (Spot) alors qu'en pratique cette Vue n'existe pas sans la Vue EcranRadar. Plus précisement, la Vue Spot n'existe même que dans la Vue EcranRadar, donc j'aurais tendance à vouloir tout centraliser dans cette dernière.
D'avance merci de vos conseils, remarques.
Partager