观察者模式

观察者模式是一种一对多的关系,当一个对象状态发生改变时,所有依赖于它的对象都得到通知并完成更新

  • 被观察者(Observerable):目标对象,状态发生变化时,通知所有的观察者
  • 观察者(Observer):接收被观察者状态变化通知

例如异步通知场景

  1. 定义被观察者
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
29
30
31
public class Observable {
private List<Observer> observers = new ArrayList<>();
private int state;

public int getState(){
return state;
}

public void setState(int state){
notifyAllObservers(state);
}

// 添加观察者
public void addObserve(Observer observer){
observers.add(observer);
}
// 移除观察者
public void removeObserve(Observer observer){
observers.remove(observer);
}

public void notifyAllObservers(int state){
if (state != 1){
System.out.println("不是通知状态");
return ;
}
for (Observer observer : observers) {
observer.doEvent();
}
}
}
  1. 观察者接口以及实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public interface Observer {
/**
* 观察者方法
*/
void doEvent();
}

public class EmailObserver implements Observer {
@Override
public void doEvent() {
System.out.println("发邮件");
}
}

public class MobileObserver implements Observer {
@Override
public void doEvent() {
System.out.println("发短信");
}
}

观察者模式
http://showyoubug.cn/2024/06/29/观察者模式/
作者
Dong Su
发布于
2024年6月29日
许可协议