📜  Java.util.Observable类(1)

📅  最后修改于: 2023-12-03 14:42:21.581000             🧑  作者: Mango

Java.util.Observable类

java.util.Observable类是Java中一个核心的类,它提供了一种实现“观察者设计模式”的机制。通过它,开发人员可以轻松地实现观察者模式中的被观察者对象,而无需编写自己的代码。

什么是观察者模式?

观察者模式是一种广泛应用的设计模式,它定义了一种一对多的关系,使得当一个对象的状态发生改变时,其所有依赖对象都会自动接收到通知并作出相应的处理。

在观察者模式中,一般会有两种角色:被观察者和观察者。被观察者是状态发生变化的对象,而观察者则是依赖于被观察者状态的对象。

Java.util.Observable类的概述

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()方法向所有观察者对象发送通知。

需要注意的是,在实现观察者模式时,被观察者对象和观察者对象之间是松耦合的。也就是说,被观察者对象不需要具体知道观察者是谁以及有多少个观察者,只需要关注自己的状态是否发生了变化,并向所有已注册的观察者对象发送通知即可。