J
Java Geek
@java_geek2.5K подп.
733просмотров
29.7%от подписчиков
29 декабря 2025 г.
questionScore: 806
📌 Декоратор в Java: Как добавить логику без изменения кода? 🔹 Когда использовать? - Когда нужно добавить поведение к объекту динамически. - Когда нельзя или не хочется менять исходный код класса. - Когда необходимо сохранить принцип открытости/закрытости (OCP из SOLID). 🔹 Как это работает? Декоратор — это обёртка вокруг базового объекта. Он реализует тот же интерфейс, но внутри может добавлять новую логику. ✅ Пример использования Допустим, у нас есть базовый интерфейс Notifier, который отправляет уведомления: public interface Notifier { void send(String message); } И его простая реализация: public class BasicNotifier implements Notifier { @Override public void send(String message) { System.out.println("Отправка сообщения: " + message); } } Теперь добавим декораторы, которые расширяют функциональность: 1️⃣ Декоратор для отправки в Slack: public class SlackNotifierDecorator implements Notifier { private final Notifier wrapped; public SlackNotifierDecorator(Notifier wrapped) { this.wrapped = wrapped; } @Override public void send(String message) { wrapped.send(message); // вызываем базовый метод System.out.println("Дополнительно отправляем в Slack: " + message); } } 2️⃣ Декоратор для отправки в Email: public class EmailNotifierDecorator implements Notifier { private final Notifier wrapped; public EmailNotifierDecorator(Notifier wrapped) { this.wrapped = wrapped; } @Override public void send(String message) { wrapped.send(message); System.out.println("Дополнительно отправляем Email: " + message); } } 🚀 Использование: public class Main { public static void main(String[] args) { Notifier notifier = new BasicNotifier(); notifier = new SlackNotifierDecorator(notifier); notifier = new EmailNotifierDecorator(notifier); notifier.send("Привет, мир!"); } } 🔥 Что произойдет? Отправка сообщения: Привет, мир! Дополнительно отправляем в Slack: Привет, мир! Дополнительно отправляем Email: Привет, мир! 🎯 Итог: ✅ Мы не изменяли код BasicNotifier, но добавили новую функциональность. ✅ Гибкость: можем легко комбинировать декораторы в любом порядке. ✅ Код остаётся чистым и расширяемым. 👉 @java_geek
733
просмотров
2304
символов
Да
эмодзи
Нет
медиа

Другие посты @java_geek

Все посты канала →
📌 Декоратор в Java: Как добавить логику без изменения кода? — @java_geek | PostSniper