【资料图】
接下来,我们实现具体主题类ConcreteSubject和具体观察者类ConcreteObserver:
import java.util.ArrayList;import java.util.List;public class ConcreteSubject implements Subject { private List observers; private float temperature; private float humidity; private float pressure; public ConcreteSubject() { observers = new ArrayList<>(); } @Override public void registerObserver(Observer observer) { observers.add(observer); } @Override public void removeObserver(Observer observer) { observers.remove(observer); } @Override public void notifyObservers() { for (Observer observer : observers) { observer.update(temperature, humidity, pressure); } } public void setMeasurements(float temperature, float humidity, float pressure) { this.temperature = temperature; this.humidity = humidity; this.pressure = pressure; measurementsChanged(); } public void measurementsChanged() { notifyObservers(); }}public class ConcreteObserver implements Observer { private float temperature; private float humidity; private float pressure; @Override public void update(float temperature, float humidity, float pressure) { this.temperature = temperature; this.humidity = humidity; this.pressure = pressure; display(); } public void display() { System.out.println("Current conditions: " + temperature + "F degrees and " + humidity + "% humidity and " + pressure + "Pa"); }}