Repaso
English

¿Qué patrón ilustra new BufferedReader(new FileReader("a.txt"))?

Opciones

  1. Singleton: solo puede existir un reader en todo el programa
  2. Decorator: BufferedReader envuelve un Reader y añade buffering (Opción correcta)
  3. Observer: el reader avisa a sus listeners de cada línea nueva
  4. Prototype: el reader se clona de una instancia existente

Respuesta

Decorator: BufferedReader envuelve otro Reader y añade buffering manteniendo la misma interface

Por qué

El patrón Decorator envuelve un objeto para añadir comportamiento, y el wrapper tiene la misma interface que el objeto envuelto.

FileReader lee caracteres de un archivo; BufferedReader lo envuelve y añade buffering y readLine(). Puedes seguir apilando: new GZIPInputStream(new FileInputStream(...)).

Es una alternativa flexible a crear muchas subclases para cada combinación de funciones.

Recuerda

Decorator = wrapper con la misma interface que añade comportamiento.

Términos clave

Practica esta pregunta en Repaso