Middle
Implementeer een klasse volgens het Observer-patroon (Event Emitter): opslag van abonnees, abonneren op een gebeurtenis, afmelden voor een gebeurtenis, abonnees informeren.
sobes.tech AI
Antwoord van 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);
Такой класс позволяет гибко управлять подписками и уведомлениями.