Вопрос проверяет понимание паттерна Observer и его применения в реальных приложениях, например, в системах событий или реактивном программировании.
Паттерн Observer (наблюдатель) — это поведенческий шаблон проектирования, который определяет зависимость типа "один ко многим" между объектами. Когда один объект (субъект) изменяет своё состояние, все зависимые объекты (наблюдатели) автоматически уведомляются и обновляются. Это позволяет избежать тесной связанности и упрощает расширение системы.
Один из самых распространённых примеров — системы событий в пользовательских интерфейсах. Например, в веб-приложении на JavaScript при изменении данных в модели (например, списка задач) все компоненты, отображающие эти данные (например, таблица и счётчик), должны обновиться. Паттерн Observer позволяет подписать эти компоненты на изменения модели и автоматически реагировать.
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 моделей. Он улучшает модульность и упрощает поддержку кода.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию