❓ Расскажите о паттерне Decorator
Decorator — это структурный паттерн, позволяющий на лету расширять поведение объекта, не изменяя его класс. Исходный объект помещается внутрь другого — декоратора, — который перехватывает вызовы и дополняет их нужной функциональностью.
Принцип тот же, что у матрёшки: каждый новый слой добавляет что-то своё.
▪️ Когда использовать
— Нужно добавить поведение объекту без наследования
— Комбинации поведений непредсказуемы (логирование + кэш + метрики в любом порядке)
— Классический пример в JDK: InputStream → BufferedInputStream → GZIPInputStream
▪️ Decorator vs наследование
— Наследование: статическое, одно на класс
— Decorator: динамическое, можно комбинировать
▪️ Минус
Много мелких классов; отладка стека из нескольких обёрток может быть неудобной.
Post #1275
881
- 👍 3
- ❤ 1
- 🔥 1