如何从父对象通知所有子对象?

max*_*mus 0 java oop

假设我有一个父对象,我有几个Children对象.如果一个孩子做了一些特殊的动作,我想通知所有其他孩子.我该怎么办?我应该将所有孩子存放在某个阵列中还是有其他更方便的方法?

Pet*_*ila 5

在您的情况下,父对象是Observable和子对象Observers

执行一些特殊操作的对象必须实现Observable接口:

public interface Observable {
    void addObserver(Observer o);
    void removebserver(Observer o);
    void notifyObservers();
}
Run Code Online (Sandbox Code Playgroud)

具体Observable类还必须具有观察者数组(此处为子对象).所以children对象必须实现简单的Observer接口.

public interface Observer {
    void update(/*data which you need to update in your children objects*/);
}
Run Code Online (Sandbox Code Playgroud)

稍后您需要Observers使用Observable.addObserver(Observer o);方法将所有子对象注册到父对象的数组中.并且您可以使用Observable.notifyObservers()方法向他们发送信息.

也可以在维基百科上查看!