¿Existe el patrón Decorator en las clases de IO de Java?

14

Para una asignación, tengo que averiguar cuál de los patrones de diseño de Gang of Four son las clases java.io.Reader y sus subclases java.io.PushbackReader , java.io.BufferedReader y java.io.FilterReader se crearon con.

Según esta publicación, el patrón de diseño sería el Patrón de decorador. Esto solo tiene sentido para mí si PushbackReader , BufferedReader y FilterReader se pueden decorar para usar al mismo tiempo, creando efectivamente un BufferedPushbackFilterReader . ¿Es esa la idea?

    
pregunta Community 19.06.2011 - 12:29

2 respuestas

10

Sí, puedes decorarlos de esa manera. Solo considera lo siguiente

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

Eso decoraría un lector original para

  • primero se almacenará en búfer
  • y luego habilite la funcionalidad de retroceso / no lectura (aún el resultado está en búfer ...)

FilterReader y Reader son clases base en la jerarquía ...

    
respondido por el dcn 19.06.2011 - 12:32
11

El patrón de decoración se aplica aquí porque BufferedReader ajusta Reader ; sigue siendo un Reader ( tiene todos los métodos de Reader ), pero tiene más "bells and whistles" (más métodos).

Aquí hay un ejemplo que muestra cómo una clase "decora" la funcionalidad de la que envuelve, y puede encadenarlos para seguir decorando:

        new BufferedReader(new FileReader(new File("some.file")));
    
respondido por el Bohemian 19.06.2011 - 12:32

Lea otras preguntas en las etiquetas