Files
java-design-patterns/observer/src/main/java/com/iluwatar/Weather.java
T
2014-10-20 13:34:14 -02:00

43 lines
962 B
Java

package com.iluwatar;
import java.util.ArrayList;
import java.util.List;
/**
*
* Weather can be observed by implementing WeatherObserver interface and
* registering as listener.
*
*/
public class Weather {
private WeatherType currentWeather;
private List<WeatherObserver> observers;
public Weather() {
observers = new ArrayList<>();
currentWeather = WeatherType.SUNNY;
}
public void addObserver(WeatherObserver obs) {
observers.add(obs);
}
public void removeObserver(WeatherObserver obs) {
observers.remove(obs);
}
public void timePasses() {
WeatherType[] enumValues = WeatherType.values();
currentWeather = enumValues[(currentWeather.ordinal() + 1) % enumValues.length];
System.out.println("The weather changed to " + currentWeather + ".");
notifyObservers();
}
private void notifyObservers() {
for (WeatherObserver obs : observers) {
obs.update(currentWeather);
}
}
}