在用于Observer Pattern的Java内置API中,我们必须将Observable类扩展为\ implement“subject”。我想知道我是否扩展了实现“Observable”的类也将成为“Subject \ Observable”,如果是这样,它会继承父级的所有观察者吗?
Ex:A类扩展了Observable
B类延伸A
所以B也是Observable / subject?
答案 0 :(得分:1)
是的,你是绝对正确的。 如果A类扩展Observable而B类扩展A,它确实使B类可观察。 您应该可以使用以下示例测试代码对此进行测试。
import java.util.Observable;
import java.util.Observer;
public class TestObserve extends Object {
MyView view;
TestObservableA testObservableA;
TestObservableB testObservableB;
public TestObserve() {
view = new MyView();
testObservableA = new TestObservableA();
testObservableA.addObserver(view);
testObservableB = new TestObservableB();
testObservableB.addObserver(view);
}
public static void main(String[] av) {
TestObserve testObserve = new TestObserve();
testObserve.testExtend();
}
public void testExtend() {
testObservableA.changeSomething();
testObservableB.changeSomething();
}
class MyView implements Observer {
public void update(Observable observable, Object x) {
System.out.println("Test Update(" + observable + "," + x + ");");
}
}
class TestObservableA extends Observable {
public void changeSomething() {
setChanged();
notifyObservers();
}
}
class TestObservableB extends TestObservableA {
public void changeSomething() {
setChanged();
notifyObservers();
}
}
}