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 :

Desassembler des Décorateurs


Sujet :

Design Patterns

  1. #1
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut Desassembler des Décorateurs
    Je trouve le Design Pattern Décorateur peu modulable une fois créé.

    Dans l'article et la présentation faite, on nous parle d'outil très modulable comparable à des légos, que l'on peut assembler en run time...

    Pourtant le désassemblage de décorateurs demande à priori pas mal de précaution ou alors j'ai zappé quelque chose ?

    Comment l'utilisez vous, vous ?

  2. #2
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Je le vois comme une pile, ou plutot comme un oignon : le décorateur supérieur masque l'inférieur, et ce , jusqu'à l'objet initial.

    Donc pour les de-assembler "in run time" , j'ai une méthode qui betement renvoie la couche inférieure, ou null si c'est l'objet initial.

    Je manipule donc le tout comme une pile, avec l'équivalent de "empiler" et "dépiler"

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Pourrais-tu donner un petit exemple concret ?

    Disons que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Objet* obj = new DecType1A( new DecType2A( new DecType3A( new ObjetDefaut() ) ) );
    Je désire remplacer le DecType2A par un DecType2B.

    Avec le code que tu utilises, comment ferais-tu ?

  4. #4
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Objet deco1 ;
    obj = obj.depileDeco(out deco1);
    obj.depileDeco();
    obj.empileDeco(new Dectype2B());
    obj.empileDeco(deco1);
    C'est de la manipulation de pile après, plus du pattern

Discussions similaires

  1. Doublement des décorateurs
    Par 3DKermit dans le forum Général Python
    Réponses: 4
    Dernier message: 04/09/2012, 14h20
  2. [ZF 1.10] Retrait des décorateurs d'un formulaire
    Par gIch dans le forum Zend_Form
    Réponses: 2
    Dernier message: 02/04/2010, 11h48
  3. Performance des décorateurs
    Par DaveShot dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 19/03/2010, 11h47
  4. Compréhension et utilisation des Décorateurs
    Par Garra dans le forum Zend_Form
    Réponses: 14
    Dernier message: 27/05/2008, 10h17
  5. Utilité des décorateurs en JAVA
    Par specsy dans le forum Général Java
    Réponses: 5
    Dernier message: 15/04/2008, 17h32

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