homework-6/src/Subject.js

28 lines
503 B
JavaScript

class Subject {
constructor() {
this.observers = [];
}
subscribe(observer) {
if (!observer || typeof observer.update !== 'function') return;
this.observers.push(observer);
}
unsubscribe(observer) {
this.observers = this.observers.filter(o => o !== observer);
}
unsubscribeAll() {
this.observers = [];
}
notifySubscribers(source, ...others) {
for (let observer of this.observers) {
observer.update(source, ...others);
}
}
}
export { Subject };