The Decorator pattern attaches additional responsibilities to an object dynamically. It wraps an object (both implement the same interface) to add behavior without modifying the original class, providing a flexible alternative to subclassing for extending functionality.