Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: Observer, design pattern, event-driven, publish-subscribe

Где в реальном приложении применяется паттерн Observer? Приведите конкретный пример.

Вопрос проверяет понимание паттерна Observer и его применения в реальных приложениях, например, в системах событий или реактивном программировании.

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

Паттерн Observer используется, когда один объект (субъект) уведомляет множество зависимых объектов (наблюдателей) об изменениях своего состояния. Например, в интерфейсе пользователя при изменении данных модели автоматически обновляются все связанные представления. Это реализует слабую связанность и упрощает поддержку кода.

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

Что такое паттерн Observer?

Паттерн Observer (наблюдатель) — это поведенческий шаблон проектирования, который определяет зависимость типа "один ко многим" между объектами. Когда один объект (субъект) изменяет своё состояние, все зависимые объекты (наблюдатели) автоматически уведомляются и обновляются. Это позволяет избежать тесной связанности и упрощает расширение системы.

Где применяется в реальных приложениях?

Один из самых распространённых примеров — системы событий в пользовательских интерфейсах. Например, в веб-приложении на JavaScript при изменении данных в модели (например, списка задач) все компоненты, отображающие эти данные (например, таблица и счётчик), должны обновиться. Паттерн Observer позволяет подписать эти компоненты на изменения модели и автоматически реагировать.

Пример кода на JavaScript

class Subject {
  constructor() {
    this.observers = [];
  }
  subscribe(observer) {
    this.observers.push(observer);
  }
  unsubscribe(observer) {
    this.observers = this.observers.filter(obs => obs !== observer);
  }
  notify(data) {
    this.observers.forEach(observer => observer.update(data));
  }
}

class Observer {
  constructor(name) {
    this.name = name;
  }
  update(data) {
    console.log(`${this.name} получил данные: ${data}`);
  }
}

const subject = new Subject();
const observer1 = new Observer('Наблюдатель 1');
const observer2 = new Observer('Наблюдатель 2');

subject.subscribe(observer1);
subject.subscribe(observer2);
subject.notify('Новое сообщение');
// Вывод: Наблюдатель 1 получил данные: Новое сообщение
//        Наблюдатель 2 получил данные: Новое сообщение

Вывод

Паттерн Observer полезен в системах, где требуется автоматическое уведомление множества компонентов об изменениях, например, в UI-фреймворках (React, Vue), системах событий или при реализации pub/sub моделей. Он улучшает модульность и упрощает поддержку кода.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • React

    React

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

#Observer

#design pattern

#event-driven

#publish-subscribe

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию