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 ?
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.
Je me rends compte maintenant que ma question est très mal posée, mais voici mon questionnement :
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
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) ?
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.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager