JDK是如何支持观察者模式的?举例说明其实现方式。
JDK 实现观察者模式主要是通过 java.util.Observer
接口和 java.util.Observable
类。这是一个简单的实现,但在实际应用中可能需要更加复杂和灵活的实现。
在这个实现中,任何想要被观察的对象可以使用 Observable
类,而所有的观察者需要实现 Observer
接口。当 Observable
类的实例状态发生改变时,它可以调用 setChanged
方法,然后调用 notifyObservers
方法来通知所有的观察者。
Observer
接口有一个 update
方法,当被观察的对象状态改变时,这个方法会被调用。对象的状态可以作为参数传递给 update
方法。
这是一个简单的例子:
在这个例子中,当气温改变时,所有注册的观察者(如 CurrentConditionsDisplay
)都会被通知。
然而,需要注意的是,自从 JDK 9 开始,Observer
和 Observable
已经被标记为废弃。这是因为存在更好的实现方式,如使用 Java 的函数式编程特性,或者使用更复杂、更灵活的观察者设计模式实现,例如 “发布-订阅” 模式。