学习之前先看一张图.

这张图片很形象的说明了观察者模式的工作原理.其中最左边那台电脑是信号发起者,我们叫它广播者,所有电脑都是信息接受者(包括最左边的广播者).我们称之为监听者.唯一的缺憾是这张图片是并联模式,而我们的观察者模式是串联模式.至于并联和串联,学过初中物理的人就知道,这里不赘述.

下面通过一段js脚本来模拟这个图片的过程,来说明我们这篇文章的主题:javascript 的观察者模式

[javascript] var hub = { listeners : [], addListener : function(listener){ hub.listeners.push(listener); return hub.addListener; }, broadcast : function(broadcaster,method){ for(i=0;i<hub.listeners.length;i++){ if(broadcaster===hub.listeners[i]){ console.log(broadcaster+'is broadcaster'); } if(hub.listeners[i][method]) hub.listeners[i][method](); } } } var computer1 = {}, computer2 = {}, computer3 = {}; computer1.receive = function(){ console.log('computer1 receive the signal!111'); } computer2.receive = function(){ console.log('computer2 receive the signal!222'); } computer3.receive = function(){ console.log('computer3 receive the signal!333'); } //添加接收信号电脑,使其具有接收信号能力 hub.addListener(computer1)(computer2)(computer3); //由computer1广播名叫receive的信号,说白了就是通知全部有接收信号能力的电脑:我要广播这个函数了,如果你有这个函数请执行它. hub.broadcast(computer1,'receive'); [/javascript]

以上就是一个最简单的观察者模式,这种设计模式在javascript中能发挥非常重要的作用.其中当今比较流行的多模块交互中用的比较多.不明白的读者可以在下面留言,或者提建议.当然也可以批评.

转载于:https://www.cnblogs.com/7hihi/archive/2010/08/15/2564196.html

javascript 的观察者模式的原理和集线器相关推荐

  1. JavaScript定时器的工作原理(翻译)

    JavaScript定时器的工作原理(翻译) 标签(空格分隔): JavaScript定时器 最近在看ajax原理的时候,看到了一篇国外的文章,讲解了JavaScript定时器的工作原理,帮助我很好的 ...

  2. javascript垃圾回收机制原理:

    javascript垃圾回收机制原理: 解决内存的泄露,垃圾回收机制会定期(周期性)找出那些不再用到的内存(变量),然后释放其内存. 通常采用的垃圾回收机制有两种方法:标记清除,引用计数. 标记清除: ...

  3. javascript回调函数(模式)原理和示例深入分析

                                                                                     广大网友读懂了我之前论述的javasc ...

  4. 说说 JavaScript 计时器的工作原理

    原文:John Resig   http://ejohn.org/blog/how-javascript-timers-work/ How JavaScript Timers Work 从基础的层面来 ...

  5. 前端JavaScript代码混淆加密原理介绍

    因为JavaScript大都是运行在浏览器端,这就导致任何人都可以直接对网站的代码进行查看,如果代码没有进行任何处理就会导致直接暴露源码,他人便可轻而易举的复制你的劳动成果,但是由于没有纯粹的加密方案 ...

  6. JavaScript中的闭包原理

    关于闭包 函数可以通过作用域链互相关联起来,函数体内部的变量都可以保存在函数作用域内,这种特性被称之为闭包 闭包的原理 函数内部的变量函数外部是无法获取的,如果我们要访问函数内部的某个变量或是变量值的 ...

  7. 一家之言:说说 JavaScript 计时器的工作原理

    看下面内容之前,看一小段代码,如果读者能说出代码的用意,那就没必要往下看了,因为你都懂.setTimeout(function(){ /* Some long block of code- */ se ...

  8. JavaScript实现观察者模式案例

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 什么是观察者模式 一.观察者模式包含两大角色 二.JavaScript样例 1.天气(被观察对象) 2.观察者(接收消息提示 ...

  9. Javascript 混淆后解码原理

    0x00 前言 Javascript 作为一种运行在客户端的脚本语言,其源代码对用户来说是完全可见的.但不是每一个 js 开发者都希望自己的代码能被直接阅读,比如恶意软件的制造者们.为了增加代码分析的 ...

最新文章

  1. Ubuntn删除软件
  2. C Primer Plus 第7章 C控制语句:分支和跳转 7.1 if语句
  3. mysql主从复制延时性问题_MySQL主从同步延迟原因及解决办法
  4. 【转】在python下使用包progressbar控制进度条
  5. cambridge ccaf potential supervisors!
  6. 设置程序默认打开方式
  7. 浏览器兼容_查成绩浏览器不兼容怎么办?
  8. Play Framework介绍:主要概念(转)
  9. MySQL笔记——外键约束和表关系(一对一,多对一,多对多)
  10. 信息学奥赛一本通(1262:【例9.6】挖地雷)
  11. Spring JdbcTemplate示例
  12. 【registry】javax ValidationException: HV000183: Unable to load ‘javax.el.ExpressionFactory‘
  13. python画三维图-Python+matplotlib绘制三维图形5个精选案例
  14. 超强 | 保险单据在线OCR,秒速识别保单信息
  15. 七彩虹断剑C.A320M-K PRO V14安装PCI-E X4转m.2转接卡,并用m.2固态作为系统盘
  16. 2.cycloneIII系列FPGA下载模式的配置
  17. 详解C语言中的#define、#undef、#indef、#ifndef、#else、#endif,#if,#elif
  18. 字节跳动+京东+美团+腾讯面试总结,附赠课程+题库
  19. 实验一 简单计算器的实现(QT实现)
  20. 证券交易api 查询证券编码及基本上市信息

热门文章

  1. mysql 免安装重装_MYSQL的免安装的重装
  2. 炫酷的元素周期表html,HTML5 经典化学元素周期表
  3. mac搭建appium环境之设置chromdriver
  4. anguarjs 图片预览_Text to Image Converter(文字转图片软件)下载-Text to Image Converter(文字转图片软件)v1.5绿色版下载...
  5. 从零开始搭建Android框架系列
  6. 自定义控件:滑动开关
  7. effective java英文版pdf_Java之Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse...
  8. 高斯坐标正反算c语言,高斯投影坐标正反算编程报告
  9. mac系统做云服务器,mac系统的云服务器
  10. 使用Asible批量部署yum仓库