IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

[Observable] addObserver() et la persistance


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut [Observable] addObserver() et la persistance
    bonjour à tous,
    j'ai une classe qui étends Observable. Cette classe est persistée dans mon application.
    si je lui ajoute des observateurs par le biais de la méthode addObserver(),et que je la persiste, pour ensuite la récupérer ,je perds la liste des observateurs enregistrés.
    Pourquoi les observateurs ne sont pas persistés ?

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Il peut y avoir plusieurs raisons à cela... Comment régénères-tu tes observateurs ? Es-tu sûr que ce sont ceux qui ont été mémorisés ?...

    En général on ne fait pas de persistance des observateurs, car il est justement difficile, et peu approprié, de les retrouver.

    Souvent par exemple dans les GUI on ne mémorise que le niveau "modèle", et pas le niveau "vue". À chaque lancement le niveau vue est recréé par le code, puisque c'est toujours le même, et ce code enregistre la vue en tant qu'observateur auprès des modèles (ou l'inverse).

  3. #3
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    justement, dans mon cas l'observateur et l'observé sont 2 classes persistantes :la classe Note et Releves de Notes.
    Si un changement survient sur la classe Note, elle va de ce fait informer la classe Releves de Notes.
    l'installation des observateurs se fait dés que les instances des 2 classes sont crées.
    Mais dés que je désérialise les 2 instances, je perds la mémorisation des observateurs. peut etre parceque l'adresse mémoire de Note change à chaque désérialisation

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Absolument : tu as trouvé la cause.

    Si tu construis ton appli en voulant tout sérialiser, je veux dire aussi bien observateurs qu'observés, il te faut un système qui te permette de retrouver, et non plus recréer, tous les objets sérialisés.

    La sérialisation d'un objet sauvegarde tous les objets qu'il contient. Lorsque tu déserializes un objet, tous ces objets contenus sont recréés, dans le respect des références d'origine : si jamais ton objet contenait deux objets identiques, les objets resteront identiques après la désérialization, mais plus identique aux objets d'origine.

  5. #5
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    Citation Envoyé par gifffftane Voir le message
    La sérialisation d'un objet sauvegarde tous les objets qu'il contient.
    Est ce que cette phrase veut dire, que si j'ajoute des observateurs à un objet et que celui ci contient déjà une liste de ceux là (agrégation), ces objets vont être sérialisés deux fois ?

  6. #6
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Je me paume un peu dans tes questions ! Pourquoi voudrais-tu rajouter des observateurs dans un objet qui contient déjà une liste de ceux là, comme tu dis ?

    Admettons que tu aies un objet contenant une liste d'observateurs. Dans cet objet, tout est sérializable. Donc la sérialization de cet objet sérializera ces observateurs.

    Lorsque tu vas désérializer cet objet, il retrouvera sa liste d'observateurs... mais, en l'état, cette liste ne servira plus à rien, à moins de les retrouver, et de redonner à chacun sont rôle dans ton application. C'est cette opération qui est prise de tête, fort peu éléguante et qui fait que habituellement on ne sérialize pas les observateurs, du moins de cette façon.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Processus persistant
    Par LeChip dans le forum Linux
    Réponses: 6
    Dernier message: 18/05/2004, 17h13
  2. [DP] observer-observable
    Par schousso dans le forum Général Java
    Réponses: 4
    Dernier message: 15/05/2004, 00h45
  3. [PaintBox] Persistance du dessin non créé dans onPaint
    Par princesse dans le forum C++Builder
    Réponses: 10
    Dernier message: 21/04/2004, 17h47
  4. Interfaces, Pattern Observer
    Par IProg dans le forum Langage
    Réponses: 8
    Dernier message: 18/12/2003, 14h11
  5. [Persistence][Framework]Avis.
    Par quilo dans le forum Persistance des données
    Réponses: 5
    Dernier message: 10/09/2003, 14h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo