Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.

@bookjava
📌 Паттерны проектирования: Декоратор в Java Привет, друзья! Сегодня я хочу разобрать с вами один из самых полезных и часто применяемых паттернов проектирования — Декоратор. 🚀 Когда его использовать? Когда нужно динамически добавлять функциональность объекту без изменения его кода. Это альтернатива наследованию, но более гибкая и мощная. 🔍 Пример из жизни Представьте, что у нас есть базовый интерфейс Notifier, который отправляет сообщения. По умолчанию он умеет слать только e-mail уведомления. Но нам нужно добавить поддержку SMS и пуш-уведомлений. Вместо того чтобы создавать кучу подклассов, мы используем Декоратор: // Базовый интерфейс interface Notifier { void send(String message); } // Основная реализация class EmailNotifier implements Notifier { @Override public void send(String message) { System.out.println("Отправка email: " + message); } } // Базовый декоратор class NotifierDecorator implements Notifier { protected Notifier notifier; public NotifierDecorator(Notifier notifier) { this.notifier = notifier; } @Override public void send(String message) { notifier.send(message); } } // Декоратор для SMS class SMSNotifier extends NotifierDecorator { public SMSNotifier(Notifier notifier) { super(notifier); } @Override public void send(String message) { super.send(message); System.out.println("Отправка SMS: " + message); } } // Декоратор для Push-уведомлений class PushNotifier extends NotifierDecorator { public PushNotifier(Notifier notifier) { super(notifier); } @Override public void send(String message) { super.send(message); System.out.println("Отправка Push-уведомления: " + message); } } // Использование public class Main { public static void main(String[] args) { Notifier notifier = new EmailNotifier(); notifier = new SMSNotifier(notifier); notifier = new PushNotifier(notifier); notifier.send("Важное сообщение!"); } } 🔥 Выход в консоль: Отправка email: Важное сообщение! Отправка SMS: Важное сообщение! Отправка Push-уведомления: Важное сообщение! ✅ Преимущества: ✔️ Гибкость: можно комбинировать декораторы в любом порядке ✔️ Принцип открытости/закрытости (OCP) — код легко расширяется ✔️ Разделение обязанностей — каждая часть отвечает за свою функцию 👉 @BookJava
Если у вас установлено приложение,
вы можете сразу перейти в канал