Pour une mission, je dois savoir qui de la bande des modèle de conception Quatre classes java.io.Reader
et ses sous - classes java.io.PushbackReader
, java.io.BufferedReader
et java.io.FilterReader
ont été construits avec.
Selon ce post, le motif de conception serait le motif décorateur. Cela n'a de sens pour moi que si PushbackReader
, BufferedReader
et FilterReader
peut être décoré pour être utilisé en même temps, créant efficacement un BufferedPushbackFilterReader
. C'est ça l'idée?
java
design-patterns
Communauté
la source
la source
Buffered
nature au-dessus de laFilter
nature?Réponses:
Oui, vous pouvez en effet les décorer comme ça. Considérez simplement ce qui suit
Cela décorerait un lecteur original pour
FilterReader
etReader
sont des classes de base dans la hiérarchie ...la source
BufferedReader
,FilterReader
etPushbackReader
sont les décorateurs deReader
, non?Le motif décorateur s'applique ici parce qu'il
BufferedReader
enveloppe unReader
- c'est toujours unReader
(il a toutes les méthodes deReader
), mais il a plus de "cloches et de sifflets" (plus de méthodes).Voici un exemple montrant comment une classe "décore" les fonctionnalités de celle qu'elle encapsule, et vous pouvez les enchaîner pour continuer à décorer:
la source