Java 接口 Observable

use*_*750 3 java interface observable

我有以下几点:

  1. 一个 Java 类:ClassA 实现了 Observer

  2. Java 接口:Inter(扩展 Observable,不可能)

  3. 一个 Java 类:ClassB 实现了 Inter extends Observable

  4. 一个Java类:ClassC实现Inter extends Observable

现在ClassA的代码有点像这样。

ClassA{
    Inter anyClass = new ClassB();
           //or it could be
    Inter anyClass = new ClassC();
    //Inter.addObserver(this); //not possible since Interface cannot extend Observable
}
Run Code Online (Sandbox Code Playgroud)

现在,如果某个特定事件发生在 ClassB 或 ClassC 中,我希望 ClassA 知道它。我想过使用 Observer/Observable 但问题是接口不能扩展 Observable。

如果有人理解这个问题,请帮助我找到在 ClassB 或 ClassC 中发生某些事情时更新 ClassA 的方法。

jag*_*ler 5

您不必特别使用内置的 Observer/Observable java 实现。您可以创建自己的接口来使用观察者模式。

使用将用于 ClassA 的方法“update”或“notify”(或类似方法)创建一个接口 Observer

然后使用“Inter”接口作为 Observable 确保它实现以下内容:

- registerObserver(Observer)
- unregisterObserver(Observer)
- notifyObservers() //(or updateObservers(), which calls the update/notify method for all registered observers)
Run Code Online (Sandbox Code Playgroud)

确保实现“Inter”接口的类也有一个名为 observerCollection 的数组列表来跟踪观察者。然后每当 ClassB 或 ClassC 发生变化并且您想告诉 ClassA(观察者)时,您可以调用 notifyObservers() 让它知道某些事情发生了变化。

看看这个,看看观察者设计模式会发生什么:http : //en.wikipedia.org/wiki/File :Observer.svg