我有以下几点:
一个Java类:ClassA的实现观察员
Java接口:国际米兰(延长观察的,是不可能的)
一个Java类:ClassB的实现国际扩展可观测
一个Java类:ClassC实现国际扩展可观测
现在对于ClassA的代码是有点像这样。
ClassA{
Inter anyClass = new ClassB();
//or it could be
Inter anyClass = new ClassC();
//Inter.addObserver(this); //not possible since Interface cannot extend Observable
}
现在,如果一个特定的事件在ClassB的或ClassC发生,我想ClassA的了解它。 我想使用观察者/可观察的,但问题是,接口不能延长观测。
如果有人理解的问题,请帮我找到一个方法来更新ClassA的东西时,ClassB中或ClassC发生。
你不明确必须使用内置的观察者/可观察的Java实现。 你可以创建自己的接口使用观察者模式。
创建与将被用于ClassA的方法“更新”或“通知”(或类似的东西)的界面观察
然后使用“内部”接口作为可观察确保它实现了以下内容:
- registerObserver(Observer)
- unregisterObserver(Observer)
- notifyObservers() //(or updateObservers(), which calls the update/notify method for all registered observers)
使实现了“国米接口确保类也有一个名为observerCollection一个ArrayList跟踪观察员。 然后每次东西ClassB的或ClassC改变,你要告诉ClassA的(观察者),你可以才调用notifyObservers(),让它知道事情已经改变。
看看这个,看看与观察者设计模式会发生什么: http://en.wikipedia.org/wiki/File:Observer.svg
由图3分4的条件我假定可观察是一类,因为ClassB的和ClassC正在扩展它。 那么,为什么不把可观察类的addObserver方法? 然后,你可以指定ClassB的或ClassC实例可观察anyClass变量,并通过addObserverMethod注册观察者:
ClassA implements Observer {
Observable anyClassB = new ClassB();
//or it could be
Observable anyClassC = new ClassC();
anyClassB.addObserver(this);
anyClassC.addObserver(this);
}
简单地定义自己的接口的IObservable与占有方法的addObserver和deleteObserver:
public interface IObservable {
void addObserver(Observer o);
void deleteObserver(Observer o);
}
你的接口可以扩展的IObservable接口:
public interface inter extends IObservable {
...
}
在你的类A和B的的addObserver和deleteObserver方法会从可观察类被继承和不需要定义。
public class A extends Observable implements inter {
...
}