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 enlever dynamiquement un décorateur


Sujet :

Design Patterns

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 19
    Par défaut comment enlever dynamiquement un décorateur
    bonjour,

    Je souhaite utiliser le pattern décorateur afin de gérer les rôles utilisateurs. En effet, j'ai des utilisateurs (instances d'une classe Personnel) qui peuvent avoir 1 ou plusieurs rôles.
    Ex : un utilisateur peut se connecter avec le rôle Intervenant. Puis en cous d'exécution du programme, il peut se connecter avec le rôle Assistance. De ce fait, il est connecté en intervenant et en assistance.
    Pour ce faire, il me semble que le pattern Decorateur soit approprié. En effet, je considère chaque rôle comme étant un décorateur de Personnel. Cela marche bien. En plus, je peux ainsi gérer des spécificités propre à chaque décorateur.
    Cependant, mon problème se situe au niveau de la déconnexion d'un rôle en cours d'exécution du programme ce qui revient à supprimer un décorateur dynamiquement. Et la je coince.
    La doc du pattern précise que l'on peut ajouter ou supprimer dynamiquement à l'exécution des décorateurs sur l'objet décoré. Or je ne vois pas comment faire et je ne trouve aucun exemple illustrant cette fonctionnalité.

    Est-ce que quelqu'un a une idée sur la manière de procéder.

    Merci

  2. #2
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Finalement, enlever une décoration revient à récupérer l'objet décoré et à supprimer l'objet décorant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    User current_user;
    User toBeDeleted;
    
    current_user = new Personnel();
    current_user = new Assistant(current_user); //décore le personnel en assistant
    current_user.faireCeciOuCela(); // c'est un assistant qui fait un truc
    
    toBeDeleted = current_user; // sauvegarde de l'objet décorant
    current_user = current_user.getDecoree(); //récupère l'objet décoré en assistant, soit un personnel dans notre cas
    free(toBeDeleted); //suppression propre de l'objet décorant
    current_user.faireCeciOuCela(); // c'est un personnel qui fait un truc
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par nanou2002 Voir le message
    bonjour,

    Je souhaite utiliser le pattern décorateur afin de gérer les rôles utilisateurs. En effet, j'ai des utilisateurs (instances d'une classe Personnel) qui peuvent avoir 1 ou plusieurs rôles.
    Ex : un utilisateur peut se connecter avec le rôle Intervenant. Puis en cous d'exécution du programme, il peut se connecter avec le rôle Assistance. De ce fait, il est connecté en intervenant et en assistance.
    Pour ce faire, il me semble que le pattern Decorateur soit approprié. En effet, je considère chaque rôle comme étant un décorateur de Personnel. Cela marche bien. En plus, je peux ainsi gérer des spécificités propre à chaque décorateur.
    Cependant, mon problème se situe au niveau de la déconnexion d'un rôle en cours d'exécution du programme ce qui revient à supprimer un décorateur dynamiquement. Et la je coince.
    La doc du pattern précise que l'on peut ajouter ou supprimer dynamiquement à l'exécution des décorateurs sur l'objet décoré. Or je ne vois pas comment faire et je ne trouve aucun exemple illustrant cette fonctionnalité.

    Est-ce que quelqu'un a une idée sur la manière de procéder.

    Merci
    Ne serait-il pas plus judicieux de garder dans la classe Personnel une liste de rôles ? La vérification du ou des rôles est alors triviale.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. [VB6]comment supprimer dynamiquement un controle dynamique?
    Par totor le troll dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 06/07/2011, 21h10
  2. [MySQL] Comment enlever des doublons lors de l'affichage d'un tableau dynamique ?
    Par wylls dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 22/12/2006, 14h54
  3. Réponses: 14
    Dernier message: 07/03/2005, 10h04
  4. [DBGRID] Comment enlever les ascenseurs H et V
    Par kase74 dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/09/2004, 18h33
  5. Réponses: 10
    Dernier message: 31/07/2003, 00h35

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