观察者模式
什么是观察者模式:
Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。
发生变化的对象是被观察者。其他对象是观察者
角色:
Subject(被观察者):
当被观察者的状态改变时,需要通知观察者队列中的对象。(被观察者需要维护一个观察者列表)
ConcreateSubject(被观察者的具体实现)
Observer(观察者):
接口或者抽象类,当被观察者的状态发生变化时,Observer对象将通过callback函数得到通知。
ConcreateObserver(观察者的具体实现):完成具体的逻辑。
Observable类:
java.uitl包下有个Observerable接口,如果一个对象需要被观察,就必须继承Observerable类。
notifyObervers()方法
Observerable类中有一个notifyObervers()方法。被观察者通过调用这个方法来通知观察者们。
addObserver(Observer observer)方法:
该方法用于注册观察者。
hasChanged()方法:
用于判断被观察者是否发生变化,
setChanged()方法:
触发被观察者的改变,这样NotifyObservers()方法发出通知后观察者的回调就会被调用,然后注册后的观察者就会得到通知。
Observer接口:
具体的观察者需要实现Observer接口。Observer接口中有个update方法,当发生变化时:该方法会触发。
类图:
应用:
监听事件驱动的程序。
监听对象状态。
实现pub-sub模式。