Паттерн "Декоратор" Java динамически добавляет объекту поведение во время выполнения или тогда, когда невозможно или нецелесообразно создавать производные классы (возможно, потому, что при этом создаются множественные подклассы).
Пример с пиццерией показывает, как добавить поведение к объекту пиццы во время выполнения на основе сделанного посетителем выбора.
Функциональность интерфейса программирования приложений (API) может быть расширена и усовершенствована посредством оборачивания в декоратор. Подобным образом часто декорируются потоки данных. java.iо.BufferedInputStream - хороший пример декоратора, оборачивающего низкоуровневое API и добавляющего функциональность буферу потока ввода. Читать