我目前正在研究观察者模式,但我仍然对这组代码感到困惑:
public interface Observer {
public void update(String availability);
}
private ArrayList<Observer> observers = new ArrayList<Observer>();
请帮助我了解Observer
界面如何在ArrayList
.
观察者是一个对象,当被观察对象发生变化时,它希望被调用。
AnArrayList<Observer>
只是一个包含 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 刚刚发生了变化。