0
在Observer模式的Java內置API中,我們必須將Observable類擴展爲\ implement「主題」。我想知道是否我擴展實現「Observable」的類也將成爲「Subject \ Observable」,如果是的話,它會繼承父類中的所有觀察者嗎?Java API的觀察者模式:主題如果擴展
例如:類A延伸可觀察
B類延伸的
所以B也可觀察/受試者?
在Observer模式的Java內置API中,我們必須將Observable類擴展爲\ implement「主題」。我想知道是否我擴展實現「Observable」的類也將成爲「Subject \ Observable」,如果是的話,它會繼承父類中的所有觀察者嗎?Java API的觀察者模式:主題如果擴展
例如:類A延伸可觀察
B類延伸的
所以B也可觀察/受試者?
是的,你是絕對正確的。 如果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();
}
}
}
謝謝!這就是我需要知道的。 – Akshu 2014-11-03 22:29:10
爲什麼不嘗試擴展它並查看調試器中會發生什麼? – 2014-11-03 21:49:02
你預計會發生什麼?詢問之前你有嘗試過嗎?我討厭使用向下投票箭頭,但是您的帖子並未顯示您在提問前嘗試過。 – hfontanez 2014-11-03 21:52:53
嗯....我沒有現成的代碼來測試..正在閱讀有關它,並想知道是否有人已經這樣做。 – Akshu 2014-11-03 21:53:07