intermediate

Decorator

Добавляйте behavior через wrapping compatible component; полезно для logging, caching, authorization, retries и UI composition.

Decorator оборачивает компонент дополнительным поведением, сохраняя тот же интерфейс — logging, caching, authorization, metrics, retries или UI enhancement. Композиция лучше взрыва подклассов, когда поведения комбинируются свободно. В TypeScript и React decorators или wrapper components реализуют ту же идею разным синтаксисом.

На интервью: сравните Decorator с Proxy, middleware и higher-order functions. Покажите стек decorators и чувствительность к порядку.

Типовые ошибки: decorators тонко меняют контракт; бесконечные цепочки wrappers; отладка через слои без correlation IDs.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Объект и decorator делят интерфейс.
  • Один decorator — одна ответственность.
  • Документируйте порядок при взаимодействии поведений.
  • Ядро тестируется без decorators.