efsefesf

by trisna dev

JavaScript

class Subject {
  private observers: Observer[] = [];

  public attach(observer: Observer): void {
    this.observers.push(observer);
  }

  public notify(): void {
    for (const observer of this.observers) {
      observer.update();
    }
  }
}

interface Observer {
  update(): void;
}

class ConcreteObserver implements Observer {
  update(): void {
    console.log('Observer notified!');
  }
}

// Penggunaan
const subject = new Subject();
const observer1 = new ConcreteObserver();
const observer2 = new ConcreteObserver();

subject.attach(observer1);
subject.attach(observer2);
subject.notify(); // Output: Observer notified! (2x)