定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
public interface User {
void update(String message);
}
public class Worker implements User {
@Override
public void update(String message) {
System.out.println("worker get " + message);
}
}
public class Student implements User {
@Override
public void update(String message) {
System.out.println("student get " + message);
}
}
public class Weather {
private List<User> observers;
private String message;
public Weather() {
this.observers = new ArrayList<>();
}
public void registerObserver(User user) {
observers.add(user);
}
public void removeObserver(User user) {
observers.remove(user);
}
public void notifyObserver() {
observers.forEach(observer -> observer.update(message));
}
public void setMessage(String message) {
this.message = message;
notifyObserver();
}
}
@Test
public void ObserverTest() {
Weather weather = new Weather();
Worker worker = new Worker();
Student student = new Student();
weather.registerObserver(worker);
weather.registerObserver(student);
weather.setMessage("rain message");
weather.removeObserver(worker);
weather.setMessage("snow message");
}