观察者模式

一直想写一篇学习观察者模式的总结没有契机,今天学习阻塞队列的原理时候看到在实现生产者消费者的时候用到了通知模式,就是所谓的观察者模式,正好顺便整理一下。

1. 简介

观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。也就是 发布-订阅 的模式。

观察者模式涉及到的参与者有:

  • Subject(目标):被观察者的接口,提供注册/删除观察者和发通知的方法;

  • Observer(观察者):观察目标的对象接口,提供目标发生改变时需要处理更新的方法;

  • ConcreteSubject(具体目标):实现被观察者接口的具体被观察者类,维护一个观察者的引用,在发通知的时候调用观察者的更新方法;

  • ConcreteObserver(具体观察者):实现观察者接口的具体观察者类。

观察者模式的使用场景

  • 比如你微博关注了一个人,那么这个人发布的微博就会推送到你这。

  • 还比如你关注了一个微信公众号,这个公众号发布的文章也会推送到你这。

2. 实例代码

就拿微博关注来举个例子,一些人关注了一个大V,那么大V每次发微博,这些人就会收到推送,哪天大V发的微博让某些人不爽了,果断取关,那么以后就不会收到大V的推送消息了。

新建Subject接口

新建Observer接口

新建Subject实现类

新建Observer实现类

新建测试类

运行结果

参考:

《面向对象的设计模式》

JAVA设计模式之观察者模式https://www.cnblogs.com/luohanguo/p/7825656.html

Last updated

Was this helpful?