美文网首页
观察者模式

观察者模式

作者: _fan凡 | 来源:发表于2019-03-27 00:02 被阅读0次

观察者模式(Obserer Pattern)又叫做发布订阅模式(Publish/subscribe)。其定义如下:

Define a one-to many dependency between objects so that when one object changes state,all its dependents are notified and update automatically.

定义一个一对多依赖的对象,这样使得这个对象的状态发生变化时,所有他依赖的对象都将被通知并自动更新。

通用类图如下:


12.png

具体角色定义如下:

1、Subject:主题,被观察者,发布者,定义被观察者必须实现的职责,必须能够动态的增加观察者,删除观察者,管理观察者并通知观察者。

2、ConcreteSubject:具体的观察者,出了拥有最基本的观察者的职责外,可以定义自己的业务逻辑

3、Observer:观察者,被通知对象,定义收到通知后的动作,具体动作实现交由具体的观察者

4、ConcreteObserver:具体的观察者,实现观察者定义的收到通知的动作。

观察者模式的优点:

1、观察者和被观察者之间是抽象耦合:这样不管是增加观察者还是增加被观察者,都是非常容易的,便于扩展。

2、建立了一套触发机制

观察者模式的缺点:

1、需要考虑开发效率和运行效率,尤其是一个观察者多个被观察者时。适当时可以考虑异步机制。

观察者模式使用场景:

1、关联行为场景:关联行为必须是可拆分的,而不是组合关系

2、事件多级触发场景

3、跨系统的消息交还场景

观察者模式的注意问题:

1、广播链问题:一个观察者可以有多重身份,也就是说既可以是观察者,也可以是被观察者,这样性能、可维护性都比较差,链路较长,容易形成闭环。

2、异步处理问题:如果在多个观察者中,中间某一个观察者处理时间较长,就会影响其后的观察者的处理,可以适时的考虑异步,这就需要考虑线程安全和队列的问题。

扩展:

在java中jdk已经实现了Oberverable的被观察这类和Oberver的观察者接口,我们在定义自己的观察者和被观察者时可以继承和实现他们。

相关文章

  • 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/shoovqtx.html