2014-11-03 30 views
0

在Observer模式的Java內置API中,我們必須將Observable類擴展爲\ implement「主題」。我想知道是否我擴展實現「Observable」的類也將成爲「Subject \ Observable」,如果是的話,它會繼承父類中的所有觀察者嗎?Java API的觀察者模式:主題如果擴展

例如:類A延伸可觀察

B類延伸的

所以B也可觀察/受試者?

+1

爲什麼不嘗試擴展它並查看調試器中會發生什麼? – 2014-11-03 21:49:02

+0

你預計會發生什麼?詢問之前你有嘗試過嗎?我討厭使用向下投票箭頭,但是您的帖子並未顯示您在提問前嘗試過。 – hfontanez 2014-11-03 21:52:53

+0

嗯....我沒有現成的代碼來測試..正在閱讀有關它,並想知道是否有人已經這樣做。 – Akshu 2014-11-03 21:53:07

回答

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(); 
     } 
    } 
} 
+0

謝謝!這就是我需要知道的。 – Akshu 2014-11-03 22:29:10