Паттерн Decorator, также известный как паттерн Wrapper, — это структурный паттерн проектирования, который позволяет тебе добавлять новое поведение объектам динамически без изменения самого объекта и без влияния на другие экземпляры того же класса.
Вместо того чтобы изменять структуру объекта, декораторы оборачивают исходный объект слоями, где каждый слой добавляет специфическую функциональность. Этот подход способствует гибкости и разделению ответственности.
Пакет java.io демонстрирует отличный пример паттерна Decorator. Ты можешь комбинировать несколько декораторов, чтобы добавлять разные поведения последовательно:
FileInputStream fis = new FileInputStream("/myfile.gz");
BufferedInputStream bis = new BufferedInputStream(fis);
GzipInputStream gis = new GzipInputStream(bis);
ObjectInputStream ois = new ObjectInputStream(gis);
Каждый декоратор оборачивает предыдущий компонент:
FileInputStream предоставляет базовую функциональность чтения файловBufferedInputStream добавляет буферизацию для лучшей производительностиGzipInputStream добавляет возможности декомпрессииObjectInputStream добавляет поддержку десериализацииВместо создания множества подклассов для каждой комбинации поведений, декораторы предоставляют более чистую альтернативу, которая снижает сложность и улучшает поддерживаемость.
Паттерн Decorator позволяет изменять оригинальную структуру объекта, добавляя новые методы прямо в определение его класса.
Новый — ещё не проверен сообществом
Вы