Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: observer, implementation

Как реализуется паттерн Observer?

Вопрос проверяет понимание практической реализации паттерна Observer и умение применять его без фреймворков.

Короткий ответ

Observer реализуется через хранение списка подписчиков и механизм их уведомления. Наблюдатели подписываются на источник событий и получают уведомления при изменении состояния. Реализация может быть синхронной или асинхронной. В Java это часто делается через интерфейсы.

Длинный ответ

Реализация Observer строится вокруг явного контракта между источником событий и подписчиками.

Базовая идея реализации

Источник событий хранит список наблюдателей и уведомляет их при изменениях.

Это позволяет добавлять и удалять подписчиков без изменения логики источника.

Шаги реализации

Сначала определяются интерфейсы.

  1. Интерфейс наблюдателя

public interface Observer {
    void update(String event);
}
  1. Источник событий

public class Subject {
    private List<Observer> observers = new ArrayList<>();

    public void subscribe(Observer observer) {
        observers.add(observer);
    }

    public void notifyObservers(String event) {
        for (Observer observer : observers) {
            observer.update(event);
        }
    }
}
  1. Конкретный наблюдатель

public class EmailObserver implements Observer {
    public void update(String event) {
        // обработка события
    }
}

Реализация в реальных проектах

На практике часто используют:

  • Колбэки

  • Event Bus

  • Реактивные библиотеки

  • Встроенные механизмы фреймворков

Вывод

Observer легко реализуется вручную, но в сложных системах обычно применяют готовые инструменты для управления событиями и асинхронностью.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#observer

#implementation

Подпишись на Java Developer в телеграм