Какие плюсы и минусы EventBus

«Какие плюсы и минусы EventBus» — вопрос из категории Паттерны, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Плюсы:

  • Простота использования: легкая реализация коммуникации между компонентами
  • Гибкость: можно передавать данные между любыми частями приложения
  • Декомпозиция: уменьшает связанность компонентов

Минусы:

  • Сложность отладки: трудно отследить цепочку событий
  • Потенциальные утечки памяти: нужно явно отписываться от событий
  • Неявные зависимости: сложно понять, кто и на какие события подписан
// Пример реализации простого EventBus
class EventBus {
  constructor() {
    this.listeners = {};
  }

  on(event, callback) {
    if (!this.listeners[event]) {
      this.listeners[event] = [];
    }
    this.listeners[event].push(callback);
  }

  emit(event, data) {
    (this.listeners[event] || []).forEach(cb => cb(data));
  }

  off(event, callback) {
    this.listeners[event] = (this.listeners[event] || [])
      .filter(cb => cb !== callback);
  }
}

Лучше использовать для простых проектов или как временное решение. В крупных приложениях предпочтительнее state-менеджеры.