js设计模式——观察者模式

/*js设计模式——.观察者模式*/// 主题,保存状态,状态变化之后触发所有观察者对象
class Subject {constructor() {this.state = 0;this.observers = [];}getState() {return this.state;}setState(state) {this.state = state;this.notifyAllObservers();}// notifyAllObservers 用于触发每个观察者的更新notifyAllObservers() {this.observers.forEach(observer => {observer.update();});}// attach 把每个存放所有观察者数组中attach(observer) {this.observers.push(observer);}
}// 观察者
class Observer {constructor(name, subject) {this.name = name;this.subject = subject;this.subject.attach(this);}// update触发更新update(observer) {console.log(`${this.name} update, state:${this.subject.getState()}`);}
}// 测试
let s = new Subject();
let o1 = new Observer('o1', s)   // 打印结果 o1 update, state:1
let o2 = new Observer('o2', s)   // 打印结果 o2 update, state:1
let o3 = new Observer('o3', s)   // 打印结果 o3 update, state:1// 各个观察者各自依次运行
s.setState(1)
s.setState(2)
s.setState(3)

  

观察者模式应用场景

转载于:https://www.cnblogs.com/hpx2020/p/10718716.html

js设计模式——3.观察者模式相关推荐

  1. js设计模式之观察者模式和发布/订阅模式

    观察者模式 The Observer is a design pattern where an object (known as a subject) maintains a list of obje ...

  2. js设计模式之观察者模式

    什么是观察者模式? 观察者模式是一对多的一种依赖关系,让多个观察者对象同时监听某一个主体对象.这个主体发生状态的时候.会通知所有的观察者对象,自动更新自己的状态. 而发布订阅者模式,则不同.发布订阅者 ...

  3. js设计模式之观察者模式和订阅发布模式

    观察者模式 这个模式在我看来原理就是发布者身上放着一个电话本(list)存着订阅者的l联系方式(回调函数),在触发条件(发布)后就会依次联系(遍历调用list中的回调函数)订阅者 上代码: funct ...

  4. js observer 添加_简单了解4种JS设计模式

    阅读本文约需要5分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了15款有用前端开发的ST插件的知识,今天跟大家分享下4种 ...

  5. js设计模式笔记小结

    JS 设计模式 面向对象 搭建开发环境 npm / webapck / webpack-dev-server / babel babel-core babel-loader babel-polyfil ...

  6. 设计模式:观察者模式--Observer

    一.什么是观察者模式 1.生活中的观察者模式 1.警察抓小偷 在现实生活中,警察抓小偷是一个典型的观察者模式「这以一个惯犯在街道逛街然后被抓为例子」,这里小偷就是被观察者,各个干警就是观察者,干警时时 ...

  7. [js]设计模式小结对原型的修改

    js设计模式小结 工厂模式/构造函数--减少重复- 创建对象有new- 自动创建obj,this赋值- 无return原型链模式 - 进一步去重类是函数数据类型,每个函数都有prototypecons ...

  8. JS设计模式之Module(模块)模式、Revealing Module(揭示模块)模式

    Module(模块)模式 概念 Module模式最初被定义为一种在传统软件工程中为类提供私有和共有封装的方法. 通过这种方式,能够使一个单独的对象拥有共有/私有方法和变量,从而屏蔽来自全局作用局的特殊 ...

  9. 深入理解JavaScript系列(32):设计模式之观察者模式

    介绍 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们 ...

最新文章

  1. 初中计算机flash操作,初中信息技术FLASH基础知识
  2. 计算机网络——链路层之停止等待协议
  3. Hdu 1496 Equations
  4. C++ 函数重载、隐藏与覆盖的区别
  5. hal库串口dma卡死_HAL库版DMA循环模式串口数据收发
  6. oracle怎么使用包,oracle包(package)入门——应用实例
  7. [USACO13OPEN]Fuel Economy【贪心】
  8. HDOJ 1505 City Game
  9. 编写函数计算正方体体积
  10. c4d和3dmax建模哪个好?
  11. 简单粗暴讲述自动化仓储系统
  12. 安卓手机做电脑摄像头(USB连接1080P 60FPS低延迟非常稳定)
  13. java中打印大小写字母
  14. HTML绘制小房子,简笔画教程怎么画小房子
  15. Ansible中的常用模块介绍
  16. 机器视觉工程师应该知道的23个工业镜头专业术语
  17. windows8 下载
  18. 如何拿到阿里、华为、美团等6个大厂的顶级offer?
  19. 基于Java+SpringBoot+Thymeleaf+Mysql在线教育视频点播学习系统设计与实现
  20. jdk8stream+mybatis动态sql代替mybatis foreach in 查询

热门文章

  1. 众成翻译2.0上线,翻译即有机会获赠图书
  2. C语言文件指针的基本函数介绍包含了fpoen、fclose、fgetc、fputc、fscanf、fprintf、fgets、fputs、fread、fwrite函数以及文件定位函数.
  3. JS事件循环 Event Loop
  4. laravel关于路径的函数
  5. requirejs与echart的一些问题
  6. mysql中写锁定实例_MySQL中的锁
  7. SpringBoot精通系列-Spring Boot中如何配置Https
  8. redis的HyperLogLog与布隆过滤器
  9. Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
  10. springboot+openFeign+nacos+gateway开发实战