1

我目前正在研究观察者模式,但我仍然对这组代码感到困惑:

public interface Observer {
    public void update(String availability);
}  
private ArrayList<Observer> observers = new ArrayList<Observer>();

请帮助我了解Observer界面如何在ArrayList.

4

2 回答 2

4

观察者是一个对象,当被观察对象发生变化时,它希望被调用。

AnArrayList<Observer>只是一个包含 0 个、一个或多个观察者的列表。当被观察对象需要调用其观察者时,它会遍历列表并调用每个观察者。

该机制类似于网站上的促销优惠。网站是被观察的对象。如果您想在创建促销优惠时收到通知,请将您自己(因此您是观察员)添加到要通知的人员列表中。该网站保留了要通知的人员列表。当网站创建新的促销优惠时,它会遍历人员(观察员)列表并向每个人发送一封电子邮件。

于 2013-10-29T13:11:59.347 回答
0

刚才提供的代码放在可以观察的对象中(Observable:http ://docs.oracle.com/javase/7/docs/api/java/util/Observable.html ):

http://commons.wikimedia.org/wiki/File:Observer.svg

一旦你这样做了,当你的 Observable 对象状态改变时,你调用类似的东西:

for(Observer o : observers)
{
    o.update(null);
}

它通知所有观察者 Observable 刚刚发生了变化。

于 2013-10-29T13:13:30.013 回答