美文网首页
观察者模式

观察者模式

作者: 架构路上的一亩三分地 | 来源:发表于2017-03-15 15:42 被阅读0次
观察者模式

定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都可以收到通知并自动更新。

Observer Pattern类图示例
  • subject持有一个observer的列表/集合。
  • 当subject状态发生变化时,通过所有的已订阅的observer执行update方法。
  • subject与observer之间为松耦合的关系,subject并不知道observer的细节,只知道osbservers实现了update()方法。
  • 在构造observer时绑定订阅的subject,便于后续需要时进行解绑。

观察者模式典型的适用场景有:

  • RSS订阅
  • Spring事件驱动模型
Spring事件驱动模型类图
  • 事件机制的实现需要三个部分,事件源,事件,事件监听器
事件源: ApplicationEvent
事件: ApplicationContext
事件监听器: ApplicationListener
  • 接口ApplicationEvent继承自jdk的EventObject,通过source得到事件源。实现类ApplicationContextEvent表示ApplicaitonContext的容器事件。
  • ApplicationContext并不直接持有观察者列表,而是通过ApplicationEventMulticaster(事件广播器)代持。
  • ApplicationContextEvent发布事件时,实际调用applicationEventMulticaster的multicastEvent(ApplicationEvent event)方法。
  • ApplicationEventMulticaster维持一个applicationListeners的LinkedHashSet,以Source+ApplicationEvent类型为Key。
  • ApplicationContext作为spring的IOC容器,或者说应用上下文,在容器初始化时,加载ApplicationEvent与ApplicationListener的映射关系。

相关文章

  • 11.9设计模式-观察者模式-详解

    设计模式-观察者模式 观察者模式详解 观察者模式在android中的实际运用 1.观察者模式详解 2.观察者模式在...

  • RxJava基础—观察者模式

    设计模式-观察者模式 观察者模式:观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式...

  • 前端面试考点之手写系列

    1、观察者模式 观察者模式(基于发布订阅模式) 有观察者,也有被观察者。 观察者需要放到被观察者列表中,被观察者的...

  • RxJava 原理篇

    一、框架思想 观察者模式观察者自下而上注入被观察者被观察者自上而下发射事件观察者模式 装饰器模式自上而下,被观察者...

  • 观察者模式

    观察者模式概念 观察者模式是对象的行为模式,又叫作发布-订阅(publish/subscrible)模式。 观察者...

  • 设计模式-观察者模式

    观察者模式介绍 观察者模式定义 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为...

  • 观察者模式

    观察者模式 观察者模式的定义 观察者模式(Observer Pattern)也叫做发布订阅模式(Publish/s...

  • iOS设计模式之观察者模式

    观察者模式 1、什么是观察者模式 观察者模式有时又被称为发布(publish)-订阅(Subscribe)模式、模...

  • 观察者模式和发布订阅模式区别

    观察者模式 所谓观察者模式,其实就是为了实现松耦合(loosely coupled)。 在观察者模式中,观察者需要...

  • RxJava(二)

    一、观察者模式 1.1、传统的观察者模式 1.2、RxJava 的观察者模式 区别传统的观察者模式是一个 Obse...

网友评论

      本文标题:观察者模式

      本文链接:https://www.haomeiwen.com/subject/thglnttx.html