观察者模式(Observer)

1

定义

  观察者模式(Observer):属于行为型模式,当对象间存在一对多关系时,一个对象被修改,则会自动通知依赖它的对象。

代码实战

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
interface Listener {
void eat();
}

class Mom {
List<Listener> list = new ArrayList<>();

void cook() {
System.out.println("cook is over");
for (Listener listener : list) {
listener.eat();
}
}

void addListener(Listener listener) {
list.add(listener);
}
}

class Child {
String name;

Mom mon;

Child(String name, Mom mon) {
this.name = name;
this.mon = mon;
}

void Hungry() {
System.out.println(name + " is hungry");
mon.addListener(() -> System.out.println(name + " is eating"));
}
}

class Test {
public static void main(String[] args) {
Mom mom = new Mom();
Child tom = new Child("Tom", mom);
Child jerry = new Child("Jerry", mom);
tom.Hungry();
jerry.Hungry();
mom.cook();
}
}

类图

1

特点

  观察者模式体现了一种依赖倒置的设计原则。在Android系统中,广播,按钮的回调等都是观察者模式的体现。上层APP需要底层系统的通知,因此系统提供一个Listener,无论上面的应用层如何实现,做到依赖抽象,不依赖细节。

总结

  观察者模式使用的场景还是比较多的,尤其是在大型项目中,一个数据的变化可能会影响其他依赖的数据,这时观察者模式就会派上用场,其实难度并不大,希望小伙伴们可以好好理解,把样例认真敲一下,感受观察者模式带来的便利。

-------------本文结束感谢您的阅读-------------
0%