WeatherStation.java
package com.designpatterns.behavioral.observer.classic;
import java.util.ArrayList;
import java.util.List;
public class WeatherStation {
private final List<WeatherObserver> observers = new ArrayList<>();
private double temperatureCelsius;
private double humidityPercent;
public void subscribe(WeatherObserver observer) {
observers.add(observer);
}
public void unsubscribe(WeatherObserver observer) {
observers.remove(observer);
}
public void setMeasurements(double temperatureCelsius, double humidityPercent) {
this.temperatureCelsius = temperatureCelsius;
this.humidityPercent = humidityPercent;
notifyObservers();
}
private void notifyObservers() {
for (WeatherObserver observer : observers) {
observer.update(temperatureCelsius, humidityPercent);
}
}
}