观察者模式:本质上就是一种订阅/发布的模型,从逻辑上来讲就是一对多的依赖关系。
顾名思义,观察者模式当然有一个观察者和一个被观察者,在被观察者有变动的时候,相应的观察者也要有些操作。
①定义一个被观察者。
②定义一个观察者
③测试类
以上就是观察者模式的实现,总结如下:
<1>每个观察者都需要保存在被观察者的集合中,同时给被观察者提供添加和删除的方法。
<2>被观察者通过构造参数传递给观察者,当被观察者发生改变时遍历通知每个观察者
Java API有内置的观察者模式,java.util包中提供了Observer接口和Observerable类。
创建一个观察者,只需要实现Observer接口,创建一个被观察者只需要继承Observerable类。
在Observer观察者接口中,提供了update方法。
在Observerable类中,已经给我们创建的有观察者的集合,注册观察者,删除观察者,通知观察者,更改状态等一系列方法。
在父类中初始化就定义了一个changed=false。每次在通知之前要更改changed为true,通知完成之后,再更改为false。因为在通知观察者的时候api中验证了changed的状态。