对象间一对多的关系,当一个对象的状态发生改变时,所以依赖于它的对象都会收到通知并处理相关逻辑。 被观察者需要知道所有的观察者,被观察者发生被动时,要循环它的所有观察者们来处理逻辑。
观察者模式
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public interface Student {
//公共接口 所有的学生都可以收到老师的信息
void acquireNotify(String message);
}
public class Teacher {
//teacher作为被观察者 需要存储他的所有观察者们
List<Student> studentList = new ArrayList<>();
public void addStudent(Student student) {
studentList.add(student);
}
public void notifyStudent() {
studentList.forEach(item -> item.acquireNotify("message"));
}
class Wang implements Student {
@Override
public void acquireNotify(String message) {
System.out.println(this.getClass().getSimpleName() + "收到老师 :" + message);
}
}
class Xu implements Student {
@Override
public void acquireNotify(String message) {
System.out.println(this.getClass().getSimpleName() + "收到老师 :" + message);
}
}
@Test
public void test() {
Teacher teacher = new Teacher();
Wang wang = new Wang();
Xu xu = new Xu();
//被观察者需要将所有的观察者存储
teacher.addStudent(wang);
teacher.addStudent(xu);
//被观察者需要通知所有的观察者们
teacher.notifyStudent();
}
}