import { Observer, Subject } from 'ts-simple-observer';
class King implements Observer {
servant: Servant;
constructor() {
this.servant = new Servant();
this.servant.attach(this);
}
update(subject: Subject, data: number): void {
console.log(`Received ${data} from subject: `, subject);
}
}
class Servant implements Subject {
observers: Observer[];
constructor() {
this.observers = [];
}
attach(observer: Observer): void {
this.observers.push(observer);
}
detach(observer: Observer): void {
const observerIndex = this.observers.indexOf(observer);
this.observers.splice(observerIndex, 1);
}
notify(data: number): void {
for (let observer of this.observers) {
observer.update(this, data);
}
}
}