Использовал ли вы слушатели (Listeners) в Java?

«Использовал ли вы слушатели (Listeners) в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, использовал. Слушатели (Listeners) в Java реализуют паттерн Наблюдатель (Observer) и используются для обработки событий в event-driven архитектурах. Они позволяют объектам (источникам событий) уведомлять другие объекты (слушателей) об изменениях своего состояния.

Основные области применения:

  1. GUI (Swing, JavaFX, Android): Обработка действий пользователя.

    // Swing: ActionListener для кнопки
    JButton button = new JButton("Click");
    button.addActionListener(e -> System.out.println("Кнопка нажата!"));
  2. Веб-приложения (Servlet API): Отслеживание событий жизненного цикла.

    // HttpSessionListener для отслеживания сессий
    @WebListener
    public class SessionLogger implements HttpSessionListener {
        public void sessionCreated(HttpSessionEvent se) {
            System.out.println("Сессия создана: " + se.getSession().getId());
        }
    }
  3. Фреймворки (Spring): Механизм Application Events.

    // Spring: Обработка кастомного события
    @EventListener
    public void handleUserRegisteredEvent(UserRegisteredEvent event) {
        // Отправить приветственное письмо
        emailService.sendWelcomeEmail(event.getUser());
    }

Преимущества использования Listeners:

  • Низкая связанность: Источник события не знает деталей реализации слушателей.
  • Расширяемость: Можно легко добавить новых слушателей, не изменяя код источника.
  • Асинхронность: Позволяет строить реактивные системы.

Слушатели — фундаментальный механизм для создания гибких и отзывчивых приложений.