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.