A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 长沙-小知姐姐 于 2019-1-3 09:33 编辑






观察者设计模式的概述

观察者设计模式是java23中软件设计模式中的一种, 这种模式类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,当你订阅了该文章,如果后续有更新,会及时通知你。

其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系

观察者设计模式详细介绍

观察者设计模式的结构图



观察者设计模式中的角色

从观察者设计模式的结构图中可以看到,这种模式中包含了四个角色

1.  抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中。每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。

2.  抽象观察者角色:为所有的具体观察者定义一个接口,在得到主题通知时更新自己。

3.  具体被观察者角色:也就是一个具体的主题,在集体主题的内部状态改变时,所有登记过的观察者发出通知。

4.   具体观察者角色:实现抽象观察者角色所需要的更新接口,一边使本身的状态与制图的状态相协调。




适合使用的场景例子
有一个微信公众号服务(可以作为被观察者),不定时发布一些消息,每个微信号(观察者)关注公众号就可以收到推送消息,取消关注就收不到推送消息。

观察者设计模式总结
观察者模式是一种使用频率非常高的设计模式,无论是移动应用、Web应用或者桌面应用,观察者模式几乎无处不在,它为实现对象之间的联动提供了一套完整的解决方案,凡是涉及到一对一或者一对多的对象交互场景都可以使用观察者模式。观察者模式广泛应用于各种编程语言的GUI事件处理的实现,在基于事件的XML解析技术以及Web事件处理中也都使用了观察者模式。






0 个回复

您需要登录后才可以回帖 登录 | 加入黑马