Sobes.tech
Middle

Тавсия диҳед, ки классро мувофиқи намунаи Observer (Observer / Event Emitter) амалӣ кунед: нигоҳдории обунаҳо, обуна шудан ба ҳодиса, аз ҳодиса хориҷ шудан, огоҳ кардани обунаҳо.

sobes.tech AI

Ҷавоб аз AI

Ниже пример реализации паттерна Наблюдатель (Observer) на JavaScript, который хранит подписчиков, позволяет подписываться, отписываться и уведомлять их:

class EventEmitter {
  constructor() {
    this.subscribers = {};
  }

  // Подписка на событие
  on(event, callback) {
    if (!this.subscribers[event]) {
      this.subscribers[event] = [];
    }
    this.subscribers[event].push(callback);
  }

  // Отписка от события
  off(event, callback) {
    if (!this.subscribers[event]) return;
    this.subscribers[event] = this.subscribers[event].filter(cb => cb !== callback);
  }

  // Уведомление подписчиков
  emit(event, data) {
    if (!this.subscribers[event]) return;
    this.subscribers[event].forEach(callback => callback(data));
  }
}

// Пример использования:
const emitter = new EventEmitter();

function onOrderStatusChange(status) {
  console.log('Статус заказа изменился на:', status);
}

emitter.on('orderStatus', onOrderStatusChange);
emitter.emit('orderStatus', 'Выполнен');
emitter.off('orderStatus', onOrderStatusChange);

Такой класс позволяет гибко управлять подписками и уведомлениями.