Расширьте возможности существующего кода.

_00 / Концепция

Класс декоратора примет экземпляр, в котором вы хотели бы расширить функциональность. Шаблон будет предоставлять тот же интерфейс, что и исходный экземпляр, но с более расширенными функциями.

_01 / Ключевые роли

_02 / Компромиссы

🟢 Декоратор — это обертка, возможность создания подкласса.
🟢 Расширение возможностей существующего кода без модификации.
🟢 Возможна обертка с несколькими декораторами.
🔴 Слишком много декораторов или слоев обертки будет тяжело поддерживать.