观察者

作者: Galileo_404 | 来源:发表于2017-05-09 23:47 被阅读9次

定义

观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有以来者都会接到通知并自动更新。

如:
主题和观察者定义一对多的关系。观察着依赖于主题,只要主题状态改变,观察者就会被通知。

image

理解

主题是真正拥有数据的人,观察者是主题的依赖者。
松耦合
当两个对象之间松耦合,交互而不用关心彼此实现的细节。
观察者模式提供一种对象设计,让主题和观察者之间松耦合。
对于观察者,主题只知道观察者实现某个接口(如Observer),主题不需要知道观察者的具体类是谁,以及实现细节;
当添加新的观察者时,主题唯一依赖的是一个实现Observer接口的对象,可以随时增加观察者。
当出现新的观察者时,主题代码不需要修改,只需要在新的观察者实现观察者接口,然后注册观察者即可,主题只会发通知给实现观察者接口的对象;
因为两者的松耦合性,可以独立的复用主题或者观察者

改变主题或者观察者其中一方,并不会影响另一方。因为两者是松耦合的,只要接口被遵守,就可以随意地改变他们。
为了交互对象之间的松耦合设计努力

松耦合的设计之所以能让我们建立一个弹性的OO系统,能应对变化是因为对象之间的相互依赖降到了最低。

相关文章

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

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

  • 观察者模式

    观察者模式,包括观察者和被观察者。观察者们将自己的需求告知被观察者,被观察者负责通知到观察者。 一、Java自带的...

  • 设计模式(三行为模式)

    观察者模式 构成 抽象被观察者 + 具体被观察者 + 抽象观察者 + 具体观察者 定义 被观察者具有修改观察列表 ...

  • Laravel5.8 模型事件与 Observer

    Observer 观察者模式创建步骤 观察者监听多个事件观察者 注册观察者注册观察者 观察者中事件的发生顺序 la...

  • PHP设计模式-观察者

    适用性 观察者观察被观察者,被观察者通知观察者 代码示例 /** * 观察者接口 */ interface Obs...

  • RxJava 原理篇

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

  • java观察者模式

    案例: 定义被观察者 定义观察者 调用 优点 观察者和被观察者之间抽象耦合。观察者模式容易扩展,被观察者只持有观察...

  • RxJava 再 "用力" 一点点

    RxJava 里面采用了观察者的设计模式,因此存在观察者与被观察者,被观察者发送消息通知观察者,观察者接收到消息更...

  • RXJava

    传统的观察者模式 RxJava 四个要素 被观察者 观察者 订阅 事件 创建被观察者subscriber就是观察者...

  • 设计模式之观察者模式

    被观察者 观察者抽象 观察者的实现类 被观察者的实现 客户端 结果 同时是观察者和被观察者 客户端 执行结果

网友评论

    本文标题:观察者

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