Displayelement.java
Public Interface displayelement {publicvoid display ();}
Currentconditionsdisplay.java
ImportJava.util.Observer;Importjava.util.Observable; Public classCurrentconditionsdisplayImplementsObserver, displayelement {Observable Observable; Private floattemperature; Private floathumidity; PublicCurrentconditionsdisplay (Observable Observable) { This. observable =observable; Observable.addobserver ( This); } Public voidUpdate (Observable obs, Object Arg) {if(Obsinstanceofweatherdata) {Weatherdata Weatherdata=(Weatherdata) Obs; This. Temperature =weatherdata.gettemperature (); This. Humidity =weatherdata.gethumidity (); Display (); } } Public voiddisplay () {System.out.println ("Current coditions:" +Temperature+ "F degress and" + humidity + "% humidity"); } }
Weatherdata.java
Importjava.util.Observable; Public classWeatherdataextendsObservable {Private floattemperature; Private floathumidity; Private floatpressure; PublicWeatherdata () {} Public voidmeasurementschanged () {setchanged (); Notifyobservers (); } Public voidSetmeasurements (floatTemperature,floatHumidity,floatpressure) { This. Temperature =temperature; This. Humidity =humidity; This. Pressure =pressure; Measurementschanged (); } Public floatgettemperature () {returntemperature; } Public floatgethumidity () {returnhumidity; } Public floatgetpressure () {returnpressure; } }
Weatherstation.java
Public classweatherstation { Public Static voidMain (string[] args) {//TODO auto-generated Method StubWeatherdata Weatherdata =NewWeatherdata (); Currentconditionsdisplay Currentdisplay=NewCurrentconditionsdisplay (Weatherdata); //Statisticsdisplay statisticsdisplay = new Statisticsdisplay (weatherdata); //Forecastdisplay forecastdisplay = new Forcecastdisplay (weatherdata);weatherdata.setmeasurements (30.4f); Weatherdata.setmeasurements (29.4f, the); Weatherdata.setmeasurements (29.4f); }}
Java built-in observer pattern sample