Il Decorator Pattern esiste nelle classi IO di Java?

14

Per un compito, devo scoprire quale dei pattern di progettazione Gang of Four le classi java.io.Reader e le sue sottoclassi java.io.PushbackReader , java.io.BufferedReader e java.io.FilterReader sono stati creati con.

In base al post , il pattern di progettazione sarebbe il pattern Decorator. Questo ha senso per me solo se PushbackReader , BufferedReader e FilterReader possono essere decorati per essere usati contemporaneamente, creando efficacemente un BufferedPushbackFilterReader . È questa l'idea?

    
posta Community 19.06.2011 - 12:29
fonte

2 risposte

10

Sì, puoi davvero decorarli così. Prendi in considerazione quanto segue

PushbackReader pushbackBufferedReader = new PushbackReader(
     new BufferedReader(original));

Ciò decorerebbe un lettore originale

  • prima essere bufferizzato
  • e quindi abilita la funzionalità pushback / non letto (il risultato è sempre nel buffer ..)

FilterReader e Reader sono classi base nella gerarchia ...

    
risposta data 19.06.2011 - 12:32
fonte
11

Il schema decoratore si applica qui perché BufferedReader racchiude un Reader - è ancora un Reader ( ha tutti i metodi di Reader ), ma ha più "campane e fischi" (più metodi).

Ecco un esempio che mostra come una classe "decora" la funzionalità di quella che avvolge e puoi incatenarla per continuare a decorare:

        new BufferedReader(new FileReader(new File("some.file")));
    
risposta data 19.06.2011 - 12:32
fonte

Leggi altre domande sui tag