use*_*750 3 java interface observable
我有以下几点:
一个 Java 类:ClassA 实现了 Observer
Java 接口:Inter(扩展 Observable,不可能)
一个 Java 类:ClassB 实现了 Inter extends Observable
一个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 的方法。
您不必特别使用内置的 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