美文网首页
Javascript设计模式-观察者模式

Javascript设计模式-观察者模式

作者: 宣大头 | 来源:发表于2019-10-15 17:32 被阅读0次

特点

1.发布/订阅的关系(但是它和发布订阅模式不是一样的,谨记)

2.一对N

//观察者模式js代码示例

//主题

class Subject {

  constructor() {

    this.state = 0

    this.observers =[]

  }

  getState() {

    return this.state

  }

  setState(state) {

    this.state = state

    this.notifyAllObservers()

  }

  notifyAllObservers() {

    this.observers.forEach((observer) => {

      observer.update()

    })

  }

  attach(observer) {

    this.observers.push(observer)

  }

}

//观察者

class Observer {

  constructor(name, subject) {

    this.name = name

    this.subject = subject

    this.subject.attach(this)

  }

  update() {

    console.log(this.name + 'update, state:' + this.subject.getState())

  }

}

//测试

let subject = new Subject()

let o1 = new Observer('o1', subject)

let o2 = new Observer('o2', subject)

let o3 = new Observer('o3', subject)

subject.setState(1)

subject.setState(2)

subject.setState(3)

写到这里,我突然发现观察者模式代码有点耦合,俗称轻耦合,然后我很自觉的去百度了一下,怎么样实现完全解耦呢,百度告诉我答案,下面简单介绍一下:

观察者模式虽然有发布订阅这种类似的关系,但是和正在的发布订阅其实是不一样的,真正的发布订阅是完全解耦;意思是观察者模式有两个对象一个观察者一个被观察者,两个直接接触,但是真正的发布订阅其实还有个代理人,俗称Broker(经理人),举个比较庸俗的例子:

观察者模式就是男的出轨,两个女的直接对决,发布订阅就是男的在中间调解,哈哈,有点垃圾~

相关文章

  • 观察者模式js实现

    参看书籍JavaScript模式第七章设计模式我的理解:观察者模式又叫订阅/发布模式。被观察者(发布者)内部需要有...

  • 观察者设计模式

    每周学点Java设计模式__观察者设计模式 本次继续更新java23中设计模式之一——观察者模式。 观察者模式(有...

  • JavaScript设计模式六(发布-订阅模式)

    JavaScript设计模式六(发布-订阅模式) 发布-订阅模式又叫做观察者模式,定义: 定义对象间的一种一对多的...

  • Javascript单例模式概念与实例

    前言 和其他编程语言一样,Javascript同样拥有着很多种设计模式,比如单例模式、代理模式、观察者模式等,熟练...

  • RxJava基础—观察者模式

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

  • 设计模式02-观察者者设计模式

    [toc] 设计模式02-观察者者设计模式 主要来源Head First设计模式(书)观察者设计模式是JDK中使用...

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

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

  • 设计模式

    工厂模式观察者设计模式instance ofdwr框架Dojo是一个用javascript语言实现的开源DHTML...

  • 17.第四篇:观察者模式

    本文摘自 《JavaScript 设计模式》张容铭 著 版权归原作者所有 观察者模式:又被称作发布-订阅者模式或消...

  • RxJava设计模式与原理

    标准观察者设计模式 RxJava是一种特殊的观察者模式,首先我们先来看标准的观察者设计模式。在标准观察者模式中,存...

网友评论

      本文标题:Javascript设计模式-观察者模式

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