前言
其实,观察者模式在我们生活中很常见;最经典的一个场景就是警察抓小偷,此时小偷是被观察者,警察是观察者,一旦小偷偷东西犯案了,警察观察到了就立刻实施逮捕。
观察者模式应用
相信大家对Spring中的lister不陌生吧,这就是典型使用观察者模式的案例,其实在JDK中也提供了一套观察者机制。这里我将以JDK及自我实现案例展开。
JDK观察者机制实现经常抓小偷
- 申明警察为观察者
@Data
public class Policeman implements Observer {
private String name;
public Policeman(String name) {
this.name = name;
}
@Override
public void update(Observable o, Object arg) {
System.out.println("警察:" + ((Thief) o).getName() + "毛贼,看你往哪里逃");
}
}
- 申明小偷为被观察者
@Data
public class Thief extends Observable {
private String name;