Files
java-design-patterns/observer/src/main/java/com/iluwatar/Weather.java
2014-08-22 21:57:54 +03:00

51 lines
1.0 KiB
Java

package com.iluwatar;
import java.util.ArrayList;
import java.util.List;
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() {
switch (currentWeather) {
case COLD:
currentWeather = WeatherType.SUNNY;
break;
case RAINY:
currentWeather = WeatherType.WINDY;
break;
case SUNNY:
currentWeather = WeatherType.RAINY;
break;
case WINDY:
currentWeather = WeatherType.COLD;
break;
default:
break;
}
System.out.println("The weather now changes to " + currentWeather);
notifyObservers();
}
private void notifyObservers() {
for (WeatherObserver obs: observers) {
obs.update(currentWeather);
}
}
}