观察者模式
观察者模式是指对象之间一对多的依赖关系,每当那个特定对象改变状态时,所有依赖于它的对象都会得到通知并被自动更新。
一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。
被观察者类中包含addObserver()、delObserver()、notifyObservers()三个方法,前两个用于添加和删除观察者,后一个用于在内容或状态变化时通知所有的观察者。
public class ObservableImpl implements BeObserver{
public void change() {
//内容发生变化
//调用通知方法
this.notifyObsever("观察到的消息");
}
@Override
public void addObsever(Obsever obsever) {
this.obseverList.add(obsever);
}
@Override
public void delObsever(Obsever obsever) {
obseverList.remove(obsever);
}
@Override
public void notifyObsever(String msg) {
for (Obsever ob:obseverList) {
ob.operate(msg);
}
}
}
观察者接收到消息后,即进行update()操作,对接收到的信息进行处理。观察者一般是一个接口,每一个实现该接口的类都是一个具体的观察者。
public class ObseverImpl implements Obsever{
@Override
public void operate(Object msg) {
//于此处收到通知并对通知进行处理
}
}
@Test
//观察者
public void test1() {
Obsever zhazha = new ObseverImpl();
Obsever chacha = new ObseverImpl();
BeObserver hanhan = new BeObserverImpl();
hanhan.addObsever(zhazha);
hanhan.addObsever(chacha);
((BeObserverImpl) hanhan).change();
}
参考文章
武三郎-【简易设计模式05】观察者模式(监听模式)
菜鸟教程-观察者模式