Design Patterns(设计模式-观察者)
观察者模式
介绍
- 观察者(订阅者) -- 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(设计模式-观察者)相关推荐
- Design patterns 设计模式
Christopher Alexander 说过:"每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复劳动" ...
- Head First Design Patterns(深入浅出设计模式)-目录
目录 序 你的大脑是如何理解设计模式的?此时,你正在设法学习些知识,而你的大脑要通过确认这些知识来给你提供支持.你的大脑在想:"最好出去做些更重要的事情,就象消灭野兽或者光着身子滑雪不是个好 ...
- 设计模式(Design Patterns)详解
设计模式(Design Patterns) --可复用面向对象软件的基础一般会用到的: Factory( 工厂模式) Singleton(单例模式) 这两个比较多 Proxy(代理模式) Adapte ...
- 架构与设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)的学习记录
唉 时至今日,已经不知道在嵌入式的道路上到底挣扎了多少个岁月,总感觉要"病入膏肓"了.此间总是不时出现一些疑惑:人家搞 Java.搞 C# 的动不动就是什么架构 / 框架的,搞 ...
- 设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns)...
设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns) 目录 · 概述 · Factory · What is the Fact ...
- 架构设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)学习笔记
前言 时至今日,已经不知道在嵌入式的道路上到底挣扎了多少个岁月,总感觉要"病入膏肓"了.此间总是不时出现一些疑惑:人家搞 Java.搞 C# 的动不动就是什么架构 / 框架的, ...
- 设计模式 - Design Patterns
一. 什么是设计模式? 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 设计模式对于面向对象编程语言的开发者来说是必备知识,但对于开发者来说设 ...
- Java23中设计模式(Design Patterns)详解
2019独角兽企业重金招聘Python工程师标准>>> 设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复 ...
- 艾伟_转载:C# Design Patterns (3) - Decorator
Decorator Pattern (装饰模式) 装饰模式可「动态」地给一个对象添加一些额外的职责,提供有别于「继承」的另一种选择.就扩展功能而言,Decorator Pattern 透过 Aggre ...
- 检索com类工厂 80070005_Hands-On Design Patterns With C++(十二)友元工厂
目录: trick:Hands-On Design Patterns With C++(零)前言zhuanlan.zhihu.com 友元工厂 c++中,友元用于给予其他类访问权限.本章具体讨论以下 ...
最新文章
- 学习统计学要掌握哪些知识
- 华为的全闪存存储发展历程
- asp.net中使用窗体身份验证
- C语言做一个通讯录程序(在console里面运行)
- Linux文件系统保存在哪里,文件系统保存在磁盘的()
- 使用C#获取IP地址方法
- python继承和多态_Python 简明教程 --- 21,Python 继承与多态
- Linux基础学习五(1):java项目部署实战教程
- Android 性能优化:使用 Lint 优化代码、去除多余资源,减少APP的size
- hibernate集合类型映射
- Jmeter4.0新版本特性研究
- HASP/Sentinel加密狗的服务器地址设置
- 移动播放器html,支持移动平台的Html5播放器
- 在Word中将A3大小的卷子拆成A4大小来打印的方法
- mjs无法访问ftp文件解决
- SAP中销售处理到期发票清单VF04功能的应用
- 基于android端计步器软件的尝试
- TensorFlow常用激活函数及其特点用法(6种)详解
- Excel在统计分析中的应用—第十二章—回归分析与预测-应用LINEST函数进行回归分析
- 【教育小程序案例】线下培训机构辅导教育
热门文章
- ode45 matlab 出错,请问,Matlab用ODE45解微分方程,出错
- 【补丁分析】CVE-2016-8610:对导致拒绝服务的“SSL Death Alert”漏洞补丁分析
- 单片机定时器_51单片机的定时器如何计算初值?
- Turtlebot2 环境配置
- vue的双向数据绑定的原理
- relu函数为分段线性函数,为什么会增加非线性元素
- CUDA并行计算 | CUDA算法效率提升关键点概述
- 每天一个小程序—0004题(统计单词出现次数)
- python爬虫爬取大众点评并导入redis
- 51Nod——1004 n^n的末位数字