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

C++ Discussion :

Patron Décorateur en statique


Sujet :

C++

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut Patron Décorateur en statique
    Hello,

    L'utilisation à gogo du patron Décorateur a-t-elle en sens quand elle est implémentée en statique (avec des templates), par rapport à l'héritage ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par oodini Voir le message
    Hello,

    L'utilisation à gogo du patron Décorateur a-t-elle en sens quand elle est implémentée en statique (avec des templates), par rapport à l'héritage ?
    Le patron décorateur impose que le type décorateur est compatible avec le type décoré de manière à ce que le premier puisse être utilisé en lieu et place du second, et ce, sans s'en rendre compte au niveau du client. Sans héritage, je ne vois pas comment faire ça.

    Tu peux donner un exemple de code ? parce que j'ai du mal à comprendre.
    [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.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	** \tparam TP The Threading Policy
    	** \tapram Handlers A static list of all message handlers
    	** \tparam Decorators A static list of all decorators
    	*/
    	template<
    		class Handlers = StdCout<>,                            // List of all static handles
    		class Decorators = Time< VerbosityLevel<Message<> > >, // List of all static decorators
    		template<class> class TP = Policy::ObjectLevelLockable // The Threading Policy
    		>
    	class Logger
    		:public TP<Logger<Handlers,Decorators,TP> >, // inherits from the Threading Policy
    		public Decorators,                           // inherits from all decorators
    		public Handlers                              // inherits from all handlers
    Je me rends compte maintenant que ma question est très mal posée, mais voici mon questionnement :

    L'intérêt du patron Décorateur est, il me semble, la mise en place d'une relation d'héritage en cours d'exécution. Or, avec une implémentation à base de templates, on se retrouve dans le cas statique. Dès lors, pourquoi ne pas se restreindre à un simple héritage (multiple) ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 4 551
    Points
    4 551
    Par défaut
    C'est une mauvaise utilisation du patter décorateur, je suspecte même que ça n'en soit pas une du tout et que dans ce cas, Decorator est utilisé pour signifier autre chose.

    Le pattern décorateur suppose que si A décore une classe de base B, alors on a les relations suivantes :

    * A hérite de B
    * A contient un B.

    Dans le code que tu postes, on se retrouve avec B qui hérite de ses décorateurs (donc B hérite de A).

    Du coup, je me demande vraiment si c'est bien le sens correct pour Decorator dans ce contexte précis. Ca vient d'où ce code ?
    [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.

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,

    Citation Envoyé par Emmanuel Deloget Voir le message
    * A hérite de B
    * A contient un B.
    C'est parce que :
    * A vise à être substiuté à B
    * B est décoré par A dynamiquement (à l'exécution).
    et que l'instance de B est décorrélée de celle de A (durée de vie).

    Faudrait voir l'utilisation dans la classe mais ce n'est peut être qu'une autre policy

Discussions similaires

  1. Patron de conception Décorateur
    Par gstratege dans le forum Général Java
    Réponses: 2
    Dernier message: 17/11/2013, 19h55
  2. Impression d'éléments Statiques avec QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 9
    Dernier message: 02/12/2003, 18h49
  3. Analyseurs statiques gratuits ?
    Par patapetz dans le forum Choisir un environnement de développement
    Réponses: 3
    Dernier message: 03/08/2003, 17h56
  4. [Singleton] Différences avec méthodes statiques
    Par Franche dans le forum Design Patterns
    Réponses: 1
    Dernier message: 26/02/2003, 17h10
  5. ActiveX : linker en statique ?
    Par tut dans le forum MFC
    Réponses: 8
    Dernier message: 07/11/2002, 10h24

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