Встречается на собеседованиях • сегодня

Что такое шаблон проектирования Observer

Observer — это поведенческий паттерн, который создаёт механизм подписки, позволяющий одним объектам следить и реагировать на события, происходящие в других объектах.

Суть:

  • Есть Subject (издатель), который хранит список подписчиков (Observers).
  • При изменении состояния Subject уведомляет всех подписчиков.
  • Observers (подписчики) реализуют общий интерфейс с методом update().

Пример на TypeScript:

typescript
interface Observer {
  update(data: any): void;
}

class Subject {
  private observers: Observer[] = [];

  subscribe(observer: Observer) {
    this.observers.push(observer);
  }

  notify(data: any) {
    this.observers.forEach(observer => observer.update(data));
  }
}

class ConcreteObserver implements Observer {
  update(data: any) {
    console.log('Received data:', data);
  }
}

// Использование
const subject = new Subject();
const observer = new ConcreteObserver();
subject.subscribe(observer);
subject.notify('Hello!'); // Выведет "Received data: Hello!"

Где применяется:

  • Реактивные системы (например, RxJS)
  • Событийные модели в UI (клики, изменения состояния)
  • Pub/Sub системы
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы