观察者模式(发布-订阅模式)
观察者模式简介:
定义:定义对象间的一对多的依赖关系,当一个对象的状态改变时,所有依赖于它的对象都得到通知并被自动更新。
?
使用例子:
网上商店中的商品在名称、价格发生变化时,必须自动通知会员,Java的API为我们提供了Observer接口和Observable类来实现观察者模式。
? Observable(可观察者)类允许在自身发生改变时,通知其它对象(实现接口Observer,观察者)。
?
使用java.util.Observer接口和java.util.Observable类实现观察者模式:
观察者实现Observer接口,并重写其中的update方法,供被观察者状态改变时调用。
被观察者继承Observable类,在Observable类中有增加,删除观察者类的方法,还有通知所有观察者都update的方法。状态改变时,先setChanged,再notifyObservers。
?
Observer观察者接口源码:
?
public class Test { public static void main(String args[]){ Product product=new Product(); Observer nameobs=new NameObserver(); Observer priceobs=new PriceObserver(); ////加入观察者 product.addObserver(nameobs); product.addObserver(priceobs); product.setName("applet"); product.setPrice(9.22f); }}?
?
?
运行结果:
C:\java>java? Test
NameObserver :name changet to applet
PriceObserver :price changet to 9.22