博客
关于我
观察者模式的理解以及在前端的广泛应用
阅读量:331 次
发布时间:2019-03-04

本文共 1192 字,大约阅读时间需要 3 分钟。

文章目录

观察者模式的理解

观察者模式(Observer):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新

  • 发布 订阅
  • 一对多关系(1:n)//n可以是1

在这里插入图片描述

左侧是观察者,被定义好后等待被触发,触发就执行update(),右侧的subject是一个被观察者,他可以被多个观察者观察,当它的状态改变时,所有观察它的观察者都会触发update()方法,知道它的状态已经改变

js代码

// 被观察者Subjectclass Subject{       constructor(){           this.state = 1        this.observers = [] //能够被这个数组里面的多个观察者被观察    }    addObserver(observer){           this.observers.push(observer)    }    setState(state){           this.state = state        this.notifyAllObservers()    }    notifyAllObservers(){           this.observers.forEach((observer)=>{               observer.update()        })    }}class Observer{       constructor(name,subject){           this.name = name        this.subject = subject        this.subject.addObserver(this) //将自己添加到Subject中去才能观察他的状态    }    update(){           console.log(`${   this.name} update,state; ${   this.subject.state}`);    }}const sub  =  new Subject()const o1 = new Observer('observer1',sub)const o2 = new Observer('Observer2',sub)const o3 = new Observer('Observer3',sub)sub.setState(5)

应用场景

事件绑定

所有的事件监听机制都是观察者模式。挺好理解的。

在这里插入图片描述

Promise

promise有三个状态,pending,resolved,rejected状态,.then()方法监听resolved状态,.catch()监听rejected状态。也是一种观察模式

转载地址:http://suue.baihongyu.com/

你可能感兴趣的文章
Linux的软链接跟Windows快捷方式一样?
查看>>
更改github的默认语言类型
查看>>
使用第三方sdk,微信wechat扫码登录
查看>>
mysql中的行转列
查看>>
ValueError: check_hostname requires server_hostname
查看>>
基于LabVIEW的入门指南
查看>>
PCB布局系列汇总
查看>>
电容入门知识
查看>>
2019CCPC女生专场赛_K - Tetris_打表/模拟_暴力之王
查看>>
“/”应用程序中的服务器错误。
查看>>
MUI之ajax获取后台接口数据
查看>>
使用sqlserver 查询不连续的数据
查看>>
用div+css+html+js 实现图片放大
查看>>
(原创)在Linux上安装运行Python3(CentOS7为例)
查看>>
变量覆盖漏洞
查看>>
weblogic之cve-2015-4852
查看>>
Java注释
查看>>
水调歌头·1024
查看>>
对不起
查看>>
C++ 函数重载
查看>>