javascript设计模式 ? 中介者模式原理与用法实例分析


Posted in Javascript onApril 20, 2020

本文实例讲述了javascript设计模式 ? 中介者模式原理与用法。分享给大家供大家参考,具体如下:

介绍:在前端开发的过程中,组件与组件之间的通讯特别常见,一个组件的change需要引起数个组件的change,这就需要组件与组件之间存在复杂的多对多关系链。如何来减轻维护这些关系的复杂度,让组件和组件之间实现低耦合?这就是我们即将介绍的中介者模式。

定义:用一个中介对象(中介者)来封装一系列的对象交互,中介者使个对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。

场景:我们来实现一个打招呼的小demo,由牛牛发送一条消息给中介者,中介者收到后通知risker发消息给牛牛

示例:

var Mediator = {
  Niuniu: null,
  Risker: null,
  showMessage: function(component, message){
    console.log(component.getName() + '说:' + message);
    if(component.getName() === 'Niuniu'){
      this.Risker.showMessage('hello Niuniu'); 
    }
  }
}
 
var Niuniu = function(){
  this.name = 'Niuniu';
  this.getName = function(){
    return this.name;
  }
  this.showMessage = function(message){
    Mediator.showMessage(this, message);
  }
}
 
var Risker = function(){
  this.name = 'Risker';
  this.getName = function(){
    return this.name;
  }
  this.showMessage = function(message){
    Mediator.showMessage(this, message);
  }
}
 
var niuniu = new Niuniu();
var risker = new Risker();
Mediator.niuniu = niuniu;
Mediator.Risker = risker;
 
niuniu.showMessage('hello Risker');
 
// Niuniu说:hello Risker
// Risker说:hello Niuniu

这个例子里面Niuniu和Risker称为同事对象,同事对象之间存在关联关系,既会被别的对象影响,也会影响别的对象。

Mediator称为中介者,其实中介者模式做的只是把之前网状的关系结构转化成了以Mediator为中心的星型结构。关联关系并没有少,只是在Mediator中集中处理了。

中介者模式总结:

优点:
* 中介者模式简化了同事对象之间的交互,它用中介者和同事的一对多交互代替了原来同事之间的多对多交互。
* 将各同事对象解耦,中介者有利于各同事对象之间的松耦合

缺点:
* 在中介者中包含了大量同事之间的交互细节,会导致中介者非常复杂难以维护。

适用场景:
* 系统中对象之间存在复杂的引用关系,系统结构混乱难以理解
* 一个对象由于引用了其他很多对象并且直接和这些对象通信,导致难以复用该对象

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Javascript学习笔记6 prototype的提出
Jan 11 Javascript
jquery获得页面元素的坐标值实现思路及代码
Apr 15 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
Aug 02 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
Apr 20 Javascript
require、backbone等重构手机图片查看器
Nov 17 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
Dec 19 Javascript
jQuery手指滑动轮播效果
Dec 22 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
Mar 13 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
Dec 26 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
Sep 23 Javascript
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
Apr 03 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
Apr 20 #Javascript
JS实现横向跑马灯效果代码
Apr 20 #Javascript
vue2.x数组劫持原理的实现
Apr 19 #Javascript
vue2.x 对象劫持的原理实现
Apr 19 #Javascript
基于js判断浏览器是否支持webGL
Apr 18 #Javascript
JavaScript对象字面量和构造函数原理与用法详解
Apr 18 #Javascript
javascript 内存模型实例详解
Apr 18 #Javascript
You might like
php录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
微信小程序 地图定位简单实例
2016/10/14 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
2017/10/30 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
Python实现合并字典的方法
2015/07/07 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
python3 enum模块的应用实例详解
2019/08/12 Python
python opencv实现证件照换底功能
2019/08/19 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
新闻专业个人求职信
2013/12/19 职场文书
园林资料员岗位职责
2013/12/30 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
父母教会我观后感
2015/06/17 职场文书
2016七一建党节慰问信
2015/11/30 职场文书