// Subject (Observable)
class WeatherStation {
    constructor() {
        this.temperature = 0;
        this.observers = [];
    }
    addObserver(observer) {
        this.observers.push(observer);
    }
    removeObserver(observer) {
        this.observers = this.observers.filter(obs => obs !== observer);
    }
    setTemperature(temperature) {
        this.temperature = temperature;
        this.notifyObservers();
    }
    notifyObservers() {
        this.observers.forEach(observer => {
            observer.update(this.temperature);
        });
    }
}
// Observer
class Observer {
    update(temperature) {}
}
// Concrete Observer
class TemperatureDisplay extends Observer {
    update(temperature) {
        console.log(`Temperature updated: ${temperature}°C`);
    }
}
// Usage
const weatherStation = new WeatherStation();
const temperatureDisplay = new TemperatureDisplay();
weatherStation.addObserver(temperatureDisplay);
weatherStation.setTemperature(25); // Output: Temperature updated: 25°C
weatherStation.setTemperature(30); // Output: Temperature updated: 30°C
 
No comments:
Post a Comment