观察者模式

订阅通知

场景


  • 需要监听

代码


Sample
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public interface Subject{
public void register(Observer o);
public void unregister(Observer o);
public notifyAll(String message);
}

public interface Observer{
public void action(String message);
}

public class Topic implements Subject {
private List<Observer> list = new ArrayList<>();

@Override
public void register(Observer o) {
list.add(o);
}
@Override
public void unregister(Observer o) {
list.remove(o);
}
@Override
public notifyAll(String message) {
for(Observer o : list) {
o.action(message);
}
}
}

优缺点


  • 推送模型,避免开线程监听拉取

应用


java.util.Observer
java.util.Observable