class Subject{
constructor(){
this.observers = []
}
addObserver(observer) {
if(typeof observer.update === 'function') {
this.observers.push(observer)
}
}
notify(...args) {
this.observers.forEach(item=>item.update(...args))
}
removeObserver(observer) {
this.observers= this.observers.filter(item=>item!==observer)
}
}
const subject = new Subject();
const observer1 = {
update: (data) => console.log('Observer1 received:', data)
};
const observer2 = {
update: (data) => console.log('Observer2 received:', data)
};
subject.addObserver(observer1);
subject.addObserver(observer2);
subject.notify('Hello Observers!');
subject.removeObserver(observer1);
subject.notify('Second message');