¿Qué patrón ilustra new BufferedReader(new FileReader("a.txt"))?
Opciones
- Singleton: solo puede existir un reader en todo el programa
- Decorator: BufferedReader envuelve un Reader y añade buffering (Opción correcta)
- Observer: el reader avisa a sus listeners de cada línea nueva
- 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.