Skip to main content

Observer pattern

// some one will call it subject
class Observerable {
#observers

constructor() {
this.#observers = []
}

subscribe(observer) {
this.#observers.push(observer)
}

unsubscribe(observer) {
this.#observers = this.#observers.filter((ob) => ob !== observer)
}

notifyAll(msg) {
this.#observers.forEach((ob) => ob.update(msg))
}

}

class Observer {
update(message) {
console.log(`Receive: ${message}`)
}
}