- 介绍
什么是观察者模式:在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。
订阅,关注。有变化会主动通知关注者。
- 实现
/**
* 观察者接口
*
* @author OF
* @date 2018年8月21日
*/
public interface ObserverInterface {
public void update(String message);
}
public class ObserverA implements ObserverInterface {
@Override
public void update(String message) {
System.out.println("A" + message);
}
}
public class ObserverB implements ObserverInterface {
@Override
public void update(String message) {
System.out.println("B" + message);
}
}
/**
* 被观察者
*
* @author OF
* @date 2018年8月21日
*/
public class Observerable {
private List<ObserverInterface> list = new ArrayList<ObserverInterface>();
public void regster(ObserverInterface observer) {
list.add(observer);
}
public void notifyObserver(String message) {
for (int i = 0; i < list.size(); i++) {
ObserverInterface oserver = list.get(i);
oserver.update(message);
}
}
}
public static void main(String[] args) {
Observerable able = new Observerable();
able.regster(new ObserverA());
able.regster(new ObserverB());
able.notifyObserver("数据发现变化了。。。");
// jdk 自带的观察者
}
}
- 总结(使用场景)
- 有一个微信公众号服务,不定时发布一些消息,关注公众号就可以收到推送消息,取消关注就收不到推送消息。
- 微博关注
- 订阅新闻、有更新就会通知。