[Java] Problème de design : repercution de modifications

Problème de design : repercution de modifications [Java] - Java - Programmation

Marsh Posté le 09-06-2004 à 10:34:11    

G un soucis pour lequel j'ai une solution, mais je pense que c crade...
 
En gros je fais un outil de configuration de plateformes mobiles, qui crée au final une liste de plateformes.
 
Une plateforme peut contenir un ou plusieurs mobiles
Un mobile possède 1 et 1 seul émulateur.
J'ai un "platformManager" qui gère la liste de plateformes, cad qui la sérialise et déserialise à la demande
 
Il faut et c'est vital que le platform manager aie tjs une liste à jour, donc il faut répercuter tt modif.
Et c'est là que ca se corse (chef lieu Ajaccio, merci San antonio)
 
-->imaginons que je change la ligne de commande d'un émulateur (c'est un de ses attributs).
--> le mobile doit savoir que son ému a changé, et se mettre à jour.
--> la plateforme doit savoir qu'un de ses mobile a changé, et se mettre à jour
--> le plateforme manager doit savoir qu'une des plateforme a changé, et doit mettre à jour la liste, et la sérialiser
 
Soucis :  
- si je change un truc dans l'ému, g le choix entre récupérer l'ému stocké dans le mobile correspondant, et faire le set dessus, ou bien alors modifier l'ému, et réaffecter tt l'objet dans le mobile...
 
En gros, g le choix entre récupérer l'objet existant et le modifier, ou en créer un nouveau, et écraser l'ancien.
 
- l'application va pas etre intensive loin de là : 1 utilisateur, et par design, on ne modifie qu'un seul truc à la fois (plateforme, mobile ou émulateur), mais malgré tout, avec mon design actuel, ca va sérialiser au moindre changement...g aucune idée de comment faire un cache, mais bon c pas le plus gros pb...
 
Vous en pensez quoi ?
 
Sachant que le tout forme une API qui sera destinée à la fois à créer des plateformes dans une appli, et à décrypter le fichier sérialisé dans l'autre
 


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 09-06-2004 à 10:34:11   

Reply

Marsh Posté le 09-06-2004 à 15:27:14    

Pattern Observer/Observable.
Utilises les PropertyChangeListener : Les Mobiles "s'abonnent" aux évènement de changement émis par une Plateforme (ou le Plateforme Manager). Quand un changement est effectué sur un mobile, la plateforme (ou le Plateforme Manager) emet un évènement de changement de propriété d'un mobile vers les mobiles abonnés à la palateforme (ou plateforme manager)(avec en paramètre l'objet associé à l'évènement). Le mobile qui se reconnait se met à jour.

Reply

Marsh Posté le 09-06-2004 à 15:55:23    

Bien vu, c'est exactement ce que j'avais fait entre temps...
 
g foutu tt les setters en private, les add/remove en protected, et les get et constructeurs publiques.
 
Qd on construit un nouveau truc (emu, mobile ou plateforme), y'a notification en chaine pour MAJ...g du réécrire l'interface et le observable pour leur faire gérer mes exceptions, et un flag booléen .
 
En fait, l'utilisateur final de l'API doit être prévenu si les valeurs suxxent ou si elles existent déjà (role de mes exceptions), mais doit pouvoir dire "oui je sais, mais je m'en fou, fais ce que je dis" dans le cas des valeurs dupliquees (en gros, autoriser l'écrasement de valeur)...
 
je me suis en fait inspiré du code d'observer, et je l'ai adapté (maintenant g Spy, et Spyable, on ne rit pas ;) )...
 
c pas top top, ca aurait été mieux de pouvoir gérer la modif d'objets existants avec les setters plutot que d'en créer de nouveaux et de les écraser, mais ca aurait été trop lourd à synchroniser...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 09-06-2004 à 16:17:22    

cool

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed