观察者模式的定义:当被观察的对象状态发生改变时,被观察者将逐一通知观察者,告知观察者其状态发生了改变。生活中常见的例子诸如订阅报纸杂志、在Twitter上关注一个人等。以在Twitter上关注某人为例,点击Twitter的Follow按钮时,表示将自己注册为某人的一个观察者,此时,被观察的就是被关注的那个人,相关类图如下:
观察者接口 主题接口
| |
| |
| |
| |
用户自身-------------------关注---------->被Follow的用户
java内置的API中已经有对观察者模式的实现,即Observable对象和Observer接口。要使用Java API实现观察者模式只需:
1. 被观察的对象继承Obervable对象,并实现自己的业务方法。
2. 观察者实现Observer接口即可。 观察者通过调用被观察者的方来来注册自己到观察者列表中去,从而让被观察者持有观察者的引用,当被观察者发生改变时,能够通过该引用通知观察者。
Java里的观察者模式随处可见,典型的例子比如swing里面的事件。其中,事件源比如按钮、窗体等就是被观察者,而实现监听接口的类即为观察者。调用按钮或者窗体的addListener方法即为注册观察者。
没有评论:
发表评论