Decorator Design Pattern
Structural design pattern.
Classes should be open for extension but closed for modification.
Decorator pattern allows adding additional behaviors to objects dynamically at runtime without affecting other object of same type by placing them inside wrapper objects. Basically, Attach additional responsibilities to an object dynamically and provide a flexible alternative to subclassing for extending functionality.
InputStream is a Base abstract Class and FilterInputStream is a decorator class extended by child classes like BufferedInputStream.
Head First Design Patterns.