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

Design Patterns Discussion :

comment récupérer les pères [Composite]


Sujet :

Design Patterns

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 172
    Points : 100
    Points
    100
    Par défaut comment récupérer les pères
    Bonjour,

    mon application possède un menu qui est un arbre de rubrique. Je pensais utiliser le pattern composite avec une classe abstraite (AbstractRubrique), la classe composite qui hérite de la classe abstraite (Rubrique) et une autre classe qui hérite de la classe abstraite (RubriqueFeuille).
    Jusque là tout va bien.

    Par contre j'aimerais avoir la possibilité de récupérer toute la hiérarchie d'une RubriqueFeuille, donc récupérer tous ses pères. J'ai l'impression que le pattern ne le propose pas. Est-ce qu'il faut que je parcours à chaque fois tout l'arbre pour récupérer le père d'une rubrique ? ou bien dois-je avoir une référence des pères dans chaque rubrique (donc avoir un lien double) ?

  2. #2
    ndp
    ndp est déconnecté
    Membre actif Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Points : 255
    Points
    255
    Par défaut
    Salut,

    Citation Envoyé par ruda.tom Voir le message
    Par contre j'aimerais avoir la possibilité de récupérer toute la hiérarchie d'une RubriqueFeuille, donc récupérer tous ses pères. J'ai l'impression que le pattern ne le propose pas. Est-ce qu'il faut que je parcours à chaque fois tout l'arbre pour récupérer le père d'une rubrique ? ou bien dois-je avoir une référence des pères dans chaque rubrique (donc avoir un lien double) ?
    C'est, au contraire, une question qu'on est souvent amene a se poser pour une implementation d'un Composite, cette reflexion fait partie de ce vehicule le pattern.
    si le plus simple pour toi, c'est d'ajouter une reference au parent dans la feuille, fait-le!
    Un design pattern n'est pas un diagramme de classe!

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 172
    Points : 100
    Points
    100
    Par défaut
    c'est vrai que c'est ce qui parait etre le plus simple, mais j'avais le sentiment que cette solution n'était pas très élégante puisqu'il y a une sorte de redondance au niveau des liens. Quand on modifie un noeud il faut penser à modifier les 2 liens.
    Si quelqu'un connait d'autres solutions... en attendant je vais partir là-dessus, merci pour ta réponse !

  4. #4
    ndp
    ndp est déconnecté
    Membre actif Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Points : 255
    Points
    255
    Par défaut
    Citation Envoyé par ruda.tom Voir le message
    c'est vrai que c'est ce qui parait etre le plus simple, mais j'avais le sentiment que cette solution n'était pas très élégante puisqu'il y a une sorte de redondance au niveau des liens. Quand on modifie un noeud il faut penser à modifier les 2 liens.
    Si quelqu'un connait d'autres solutions... en attendant je vais partir là-dessus, merci pour ta réponse !
    Comme ta relation Parent/Enfant est navigable dans les deux sens, tu pointes bien le gros inconvenient: il faut que tu t'assures de la coherences de ta grappe d'objet.

    Si tu veux mon point de vue: ce n'est pas une question d'elegance. Je ne pense pas que cette solution soit inelegante, pour moi elle peut etre simple et efficace donc elegante. En general je privilegie, au premier abord, la navigabilite par reference, ce qui peut donc amener a des doubles references.

    Apres, c'est vrai, il faut trouver des criteres qui te feront, au cas par cas, plus pencher vers une reference vers le parent ou alors demander a un autre objet la reference au parent.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 172
    Points : 100
    Points
    100
    Par défaut
    oui je pense que je vais privilégier la double référence.

    La solution de demander à un autre objet la reference au parent peut être un peu penalisant au niveau temps de traitement puisqu'il faut parcourir l'arbre à chaque fois qu'on veut remonter d'un niveau, donc si on veut remonter d'un noeud terminal au noeud root... (je dis pas de betises là ?)

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

Discussions similaires

  1. Comment récupérer les icones système ?
    Par Reynald dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 27/07/2005, 15h05
  2. comment récupérer les x premiers enregistrements
    Par laurent82 dans le forum SQL
    Réponses: 7
    Dernier message: 12/12/2004, 17h29
  3. Réponses: 5
    Dernier message: 07/07/2004, 16h13
  4. Réponses: 3
    Dernier message: 23/01/2004, 22h02
  5. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 15h27

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