Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns javaapi的观察者模式:扩展时的主题_Design Patterns_Observer Pattern_Java - Fatal编程技术网

Design patterns javaapi的观察者模式:扩展时的主题

Design patterns javaapi的观察者模式:扩展时的主题,design-patterns,observer-pattern,java,Design Patterns,Observer Pattern,Java,在用于观察者模式的Java内置API中,我们必须扩展可观察类以成为\实现“主题”。我想知道我是否扩展了实现“Observable”的类,该类是否也将成为“Subject\Observable”,如果是,它是否会从父级继承所有观察者 例:A类扩展了可观察性 B类扩展了A类 那么B也是可观察的/主体?是的,你是绝对正确的。 如果A类扩展了可观察的,B类扩展了A,那么B类确实是可观察的。 您应该能够使用下面的示例测试代码来测试这一点 import java.util.Observable; impo

在用于观察者模式的Java内置API中,我们必须扩展可观察类以成为\实现“主题”。我想知道我是否扩展了实现“Observable”的类,该类是否也将成为“Subject\Observable”,如果是,它是否会从父级继承所有观察者

例:A类扩展了可观察性

B类扩展了A类


那么B也是可观察的/主体?

是的,你是绝对正确的。 如果A类扩展了可观察的,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();
        }
    }
}

为什么不尝试扩展它,看看调试器中会发生什么?您希望发生什么?你问之前试过吗?我讨厌使用向下投票箭头,但是你的帖子没有显示你在提问之前已经试过了。嗯……我没有现成的代码可以测试。。正在阅读相关内容,想知道是否有人这样做。堆栈溢出不应该是第一个调用端口。如果有什么问题的话,那应该是在你用尽所有其他方法回答问题后的最后一次机会谢谢!!我只需要知道这些。