一、JDK对观察者模式的支持

观察者模式在Java语言中的地位非常重要。在JDK的java.util包中,提供了Observable类以及Observer接口,它们构成了JDK对观察者模式的支持。如图所示:
image.png

(1) Observer接口

在java.util.Observer接口中只声明一个方法,它充当抽象观察者,其方法声明代码如下所示:

  1. void update(Observable o, Object arg);
  1. 当观察目标的状态发生变化时,该方法将会被调用,在Observer的子类中将实现update()方法,即具体观察者可以根据需要具有不同的更新行为。当调用观察目标类ObservablenotifyObservers()方法时,将执行观察者类中的update()方法。

(2) Observable类

  1. java.util.Observable类充当观察目标类,在Observable中定义了一个向量Vector来存储观察者对象,它所包含的方法及说明见表22-1:<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/2925391/1634778376341-28ff9272-80ea-4096-adf5-6de956bef81f.png#clientId=u140b4e03-4d17-4&from=paste&height=506&id=u9f2c4ae0&margin=%5Bobject%20Object%5D&name=image.png&originHeight=832&originWidth=1475&originalType=binary&ratio=1&size=171206&status=done&style=none&taskId=uec4009be-81d4-455d-98b5-f7793c25310&width=897)<br />我们**可以直接使用Observer接口和Observable类来作为观察者模式的抽象层,再自定义具体观察者类和具体观察目标类**,通过使用JDK中的Observer接口和Observable类,可以更加方便地在Java语言中应用观察者模式。<br />[

](https://blog.csdn.net/lovelion/article/details/7720507)