Lecture w3 01 PDF
Lecture w3 01 PDF
Part 2
Observer Pattern
• is useful when you want to keep your dependents in the know, when something they care about happens
• in observer pattern
• One-to-many relationship
• Forth design principle: strive for loosely coupled design between objects that interact
Observer Pattern Definition
• The hardware
an argument
interface
private float pressure;
public WeatherData() {
observers
}
• Three parameters;
observers.add(o);
int i = observers.indexOf(o);
observers.remove(i); } }
notifyObservers();
}
Concrete Subject
Implementation public class WeatherData implements
Subject {
•
private float humidity;
interface
}
subscribe
}
• removeObserver() —>
int i = observers.indexOf(o);
unsubscribe if (i >= 0) {
observers.remove(i);
notifyObservers(); }
Concrete Subject
Implementation public class WeatherData implements
Subject {
• notifyObservers()
observers implement
observers = new ArrayList();
int i = observers.indexOf(o);
if (i >= 0) {
update () method
observers.remove(i); } }
observer.update(temperature, humidity,
pressure); } }
notifyObservers();
variables; temperature,
humidity, and pressure
this.temperature = temperature;
this.humidity = humidity;
• To be able to test the code, this.pressure = pressure;
measurementChanged () }
Concrete Subject
public class WeatherData implements Subject {
public WeatherData() {
1
2) register/deregister an Observer from the observers = new ArrayList();}
observers.add(o); }
observers.remove(i); } }
3
notifyObservers(); }
}
Weather App Design
Observer
public interface Observer {
public void update(float temp, float humidity, float pressure);
display();
}
Concrete Observer
public class CurrentConditionsDisplay
this.weatherData = weatherData;
weatherData.registerObserver(this);
Inherited from public void update(float temperature, float humidity, float pressure) {
the
DisplayElement + “F degrees and “ + humidity + “% humidity”);
}}
Connect all components
}}
How to communicate
changes
• push
• pull
• push or pull