在Observer模式上使用ArrayList

时间:2013-10-29 13:06:30

标签: java arraylist

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

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

请帮助我了解Observer界面如何在ArrayList上运行。

2 个答案:

答案 0 :(得分:4)

观察者是一个想要在被观察对象发生变化时被调用的对象。

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

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

答案 1 :(得分: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刚刚改变。