Что такое Observer

Ответ

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 {
  update(data) {
    console.log('Получены данные:', data);
  }
}

const subject = new Subject();
const observer = new Observer();

subject.subscribe(observer);
subject.notify('Новое событие!'); // Выведет: "Получены данные: Новое событие!"

Используется:

  • Реактивные системы (например, Vue, React)
  • Событийные модели (например, DOM Events)
  • Pub/Sub системы

Плюсы:

  • Гибкость (легко добавлять/удалять наблюдателей)
  • Снижение связанности (субъект не знает детали наблюдателей)

Минусы:

  • Неожиданные обновления (если цепочка вызовов сложная)
  • Потенциальные утечки памяти (если не отписаться)