我目前正在研究观察者模式,但我仍然对这组代码感到困惑:
public interface Observer {
public void update(String availability);
}
private ArrayList<Observer> observers = new ArrayList<Observer>();
请帮助我了解Observer
界面如何在ArrayList
上运行。
答案 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刚刚改变。