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

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

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

Пример на TypeScript:

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

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

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

unsubscribe(observer: Observer) {
this.observers = this.observers.filter(obs => obs !== 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!'); // Observer получит уведомление

text

**Где применяется:**  
- Реактивные системы (например, RxJS).  
- Событийные модели (клик, изменение состояния).  
- UI-компоненты, обновляющиеся при изменении данных.  

**Плюсы:**  
- Гибкая связь между объектами.  
- Динамическая подписка/отписка.  

**Минусы:**  
- Не гарантирует порядок уведомлений.  
- Риск утечек памяти, если не отписываться.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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