📅  最后修改于: 2023-12-03 14:42:21.581000             🧑  作者: Mango
java.util.Observable
类是Java中一个核心的类,它提供了一种实现“观察者设计模式”的机制。通过它,开发人员可以轻松地实现观察者模式中的被观察者对象,而无需编写自己的代码。
观察者模式是一种广泛应用的设计模式,它定义了一种一对多的关系,使得当一个对象的状态发生改变时,其所有依赖对象都会自动接收到通知并作出相应的处理。
在观察者模式中,一般会有两种角色:被观察者和观察者。被观察者是状态发生变化的对象,而观察者则是依赖于被观察者状态的对象。
java.util.Observable
是Java中提供的一个类,它用于实现观察者模式中的被观察者对象。在Observable
类中,有两个重要的方法:addObserver()
和notifyObservers()
。
addObserver()
方法用于将一个观察者对象添加到被观察者对象中,以便其能够接收到被观察者对象的通知。如果要移除一个观察者对象,可以使用deleteObserver()
方法。
notifyObservers()
方法用于向已注册的所有观察者对象发送通知,通知中可以包含一些数据。此外,在通知之前,可以使用setChanged()
方法将被观察者对象的状态标记为“已改变”。
下面是一个简单的示例代码,它演示了如何使用Observable
类实现观察者模式:
import java.util.Observable;
import java.util.Observer;
public class MyObservable extends Observable {
public void doSomething() {
// 将被观察者对象的状态置为“已改变”
setChanged();
// 向所有已注册的观察者对象发送通知
notifyObservers();
}
public static void main(String[] args) {
MyObservable observable = new MyObservable();
observable.addObserver(new Observer() {
@Override
public void update(Observable o, Object arg) {
// 处理通知
}
});
observable.doSomething();
}
}
在示例代码中,MyObservable
类继承自Observable
类,表示一个被观察者对象。doSomething()
方法是被观察者对象的某个行为,它在执行完之后向所有已注册的观察者对象发送通知。
在main()
方法中,首先创建一个MyObservable
对象observable
,然后向其中添加一个观察者对象,该对象实现了Observer
接口。随后,调用doSomething()
方法向所有观察者对象发送通知。
需要注意的是,在实现观察者模式时,被观察者对象和观察者对象之间是松耦合的。也就是说,被观察者对象不需要具体知道观察者是谁以及有多少个观察者,只需要关注自己的状态是否发生了变化,并向所有已注册的观察者对象发送通知即可。