observer pattern example: WeatherStation and Swing