观察者模式

介绍

  • 观察者(订阅者) -- Watcher

    • update():当事件发生时,具体要做的事情
  • 目标(发布者) -- Dep
    • subs 数组:存储所有的观察者
    • addSub():添加观察者
    • notify():当事件发生,调用所有观察者的 update() 方法
  • 没有事件中心
// 目标(发布者)// Dependencyclass Dep {constructor() {// 存储所有的观察者this.subs = [];}// 添加观察者addSub(sub) {if (sub && sub.update) {this.subs.push(sub);}}// 通知所有观察者notify() {this.subs.forEach((sub) => {sub.update();});}}// 观察者(订阅者)class Watcher {update() {console.log('update');}}// 测试let dep = new Dep();let watcher = new Watcher();dep.addSub(watcher);dep.notify();

观察者模式 与 发布/订阅模式 区别

  • 观察者模式

    • 是由具体目标调度,比如当事件触发,Dep 就会去调用观察者的方法,所以观察者模式的订阅者与发布者之间是存在依赖的。
  • 发布/订阅模式
    • 由统一调度中心调用,因此发布者和订阅者不需要知道对方的存在。

​​​​​​​Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

Design Patterns(设计模式-观察者)相关推荐

  1. Design patterns 设计模式

    Christopher Alexander 说过:"每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复劳动" ...

  2. Head First Design Patterns(深入浅出设计模式)-目录

    目录 序 你的大脑是如何理解设计模式的?此时,你正在设法学习些知识,而你的大脑要通过确认这些知识来给你提供支持.你的大脑在想:"最好出去做些更重要的事情,就象消灭野兽或者光着身子滑雪不是个好 ...

  3. 设计模式(Design Patterns)详解

    设计模式(Design Patterns) --可复用面向对象软件的基础一般会用到的: Factory( 工厂模式) Singleton(单例模式) 这两个比较多 Proxy(代理模式) Adapte ...

  4. 架构与设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)的学习记录

    唉   时至今日,已经不知道在嵌入式的道路上到底挣扎了多少个岁月,总感觉要"病入膏肓"了.此间总是不时出现一些疑惑:人家搞 Java.搞 C# 的动不动就是什么架构 / 框架的,搞 ...

  5. 设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns)...

    设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns) 目录 · 概述 · Factory · What is the Fact ...

  6. 架构设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)学习笔记

    前言   时至今日,已经不知道在嵌入式的道路上到底挣扎了多少个岁月,总感觉要"病入膏肓"了.此间总是不时出现一些疑惑:人家搞 Java.搞 C# 的动不动就是什么架构 / 框架的, ...

  7. 设计模式 - Design Patterns

    一. 什么是设计模式? 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 设计模式对于面向对象编程语言的开发者来说是必备知识,但对于开发者来说设 ...

  8. Java23中设计模式(Design Patterns)详解

    2019独角兽企业重金招聘Python工程师标准>>> 设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复 ...

  9. 艾伟_转载:C# Design Patterns (3) - Decorator

    Decorator Pattern (装饰模式) 装饰模式可「动态」地给一个对象添加一些额外的职责,提供有别于「继承」的另一种选择.就扩展功能而言,Decorator Pattern 透过 Aggre ...

  10. 检索com类工厂 80070005_Hands-On Design Patterns With C++(十二)友元工厂

    目录: trick:Hands-On Design Patterns With C++(零)前言​zhuanlan.zhihu.com 友元工厂 c++中,友元用于给予其他类访问权限.本章具体讨论以下 ...

最新文章

  1. 学习统计学要掌握哪些知识
  2. 华为的全闪存存储发展历程
  3. asp.net中使用窗体身份验证
  4. C语言做一个通讯录程序(在console里面运行)
  5. Linux文件系统保存在哪里,文件系统保存在磁盘的()
  6. 使用C#获取IP地址方法
  7. python继承和多态_Python 简明教程 --- 21,Python 继承与多态
  8. Linux基础学习五(1):java项目部署实战教程
  9. Android 性能优化:使用 Lint 优化代码、去除多余资源,减少APP的size
  10. hibernate集合类型映射
  11. Jmeter4.0新版本特性研究
  12. HASP/Sentinel加密狗的服务器地址设置
  13. 移动播放器html,支持移动平台的Html5播放器
  14. 在Word中将A3大小的卷子拆成A4大小来打印的方法
  15. mjs无法访问ftp文件解决
  16. SAP中销售处理到期发票清单VF04功能的应用
  17. 基于android端计步器软件的尝试
  18. TensorFlow常用激活函数及其特点用法(6种)详解
  19. Excel在统计分析中的应用—第十二章—回归分析与预测-应用LINEST函数进行回归分析
  20. 【教育小程序案例】线下培训机构辅导教育

热门文章

  1. ode45 matlab 出错,请问,Matlab用ODE45解微分方程,出错
  2. 【补丁分析】CVE-2016-8610:对导致拒绝服务的“SSL Death Alert”漏洞补丁分析
  3. 单片机定时器_51单片机的定时器如何计算初值?
  4. Turtlebot2 环境配置
  5. vue的双向数据绑定的原理
  6. relu函数为分段线性函数,为什么会增加非线性元素
  7. CUDA并行计算 | CUDA算法效率提升关键点概述
  8. 每天一个小程序—0004题(统计单词出现次数)
  9. python爬虫爬取大众点评并导入redis
  10. 51Nod——1004 n^n的末位数字