Decorator Pattern in Java’s Popular Libraries
Real-World Decorator Pattern Implementations
In this article we will explore real-world Java libraries and frameworks that make use of the Decorator pattern internally.
First, it’s essential to grasp its significance and learn how to apply it.
Java I/O (BufferedInputStream
)
InputStream input = new BufferedInputStream(new FileInputStream("file.txt"));
BufferedInputStream
wraps (decorates
) a FileInputStream
to add buffering capabilities, which improves reading performance by reducing the number of I/O operations performed on the file system.
Java I/O (DataInputStream
)
DataInputStream dataInput = new DataInputStream(new BufferedInputStream(new FileInputStream("file.txt")));
DataInputStream
decorates a BufferedInputStream
to provide higher-level methods for reading Java primitives (like int
, float
, UTF
, etc.) while still utilizing the buffering functionality for performance.