观察者模式¶
这个模式自己没有实际使用过,感觉对它的理解有点问题,有机会再搞清楚些。
观察者模式和发布订阅模式很像。 适用于当一个对象的状态变化需要通知多个其他对象时和事件驱动系统里面,消息队列里面就有应用, 但是它无法保证通知顺序,是随机的。
🏀代码样例¶
首先定义观察者,他需要时刻准备更新信息,然后需要有一个主题类,这个主题要求有增删观察者(订阅者), 还有提醒的功能。
public class Subject {
private final List<Observer> observers = Lists.newArrayList();
public void registerObserver(Observer observer) {
observers.add(observer);
}
public void removeObserver(Observer observer) {
observers.remove(observer);
}
/**
* 通知
*/
public void notifyObservers(String message) {
observers.forEach(observer -> observer.update(message));
}
}
观察者接口只是一个抽象类,没有具体实现,为此可以根据业务增加子类。
🐔使用方式¶
使用的时候只需要在有各自对象的时候,直接通知即可。