设计模式中的观察者模式,又称发布-订阅模式(Publish-Subscribe);
定义:
它定义了一种一对多的依赖关系,让多个观察者对象同时监听某个主题对象。这个主题对象在状态发生变化时,会通知所有的观察者对象,使得观察者能够接收消息后及时自动更新状态。
特点:
在主题对象中使用一个ArrayList存放所有的观察者对象,当状态发生变化时,遍历List通知观察者更新。
示例:
以Java代码为例,如下模型;
/**
* 观察者接口
*/
public interface IObserver {
void update();
}
import java.util.ArrayList;
import java.util.List;
/**
* 通知者,即被观察者抽象类
*/
public abstract class Subject {
/*以List存放观察者*/
private List<IObserver> mList = new ArrayList<>();
/*添加方法*/
public void attach(IObserver observer) {
mList.add(observer);
}
/*移除方法*/
public void detach(IObserver observer) {
mList.remove(observer);
}
/*遍历通知观察者*/
public void notice() {
for (IObserver observer : mList) {
observer.update();
}
}
}
上述就是简单的模型,我们在实例化时,需要先为通知者注册观察者,寄存到List中;当通知者收到触发条件时调用notice方法,遍历通知观察者更新。