千家信息网

web前端中中介者模式的示例分析

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,这篇文章将为大家详细讲解有关web前端中中介者模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。中介者模式(Mediator Pattern)在中介者模式
千家信息网最后更新 2024年11月24日web前端中中介者模式的示例分析

这篇文章将为大家详细讲解有关web前端中中介者模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

中介者模式(Mediator Pattern)

在中介者模式中,中介者(Mediator)包装了一系列对象相互作用的方式,使得这些对象不必直接相互作用,而是由中介者协调它们之间的交互,从而使它们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用,保证这些作用可以彼此独立的变化。

中介者模式和观察者模式有一定的相似性,都是一对多的关系,也都是集中式通信,不同的是中介者模式是处理同级对象之间的交互,而观察者模式是处理Observer和Subject之间的交互。中介者模式有些像婚恋中介,相亲对象刚开始并不能直接交流,而是要通过中介去筛选匹配再决定谁和谁见面。

场景

  • 例如购物车需求,存在商品选择表单、颜色选择表单、购买数量表单等等,都会触发change事件,那么可以通过中介者来转发处理这些事件,实现各个事件间的解耦,仅仅维护中介者对象即可。

var goods = {   //手机库存    'red|32G': 3,    'red|64G': 1,    'blue|32G': 7,    'blue|32G': 6,};//中介者var mediator = (function() {    var colorSelect = document.getElementById('colorSelect');    var memorySelect = document.getElementById('memorySelect');    var numSelect = document.getElementById('numSelect');    return {        changed: function(obj) {            switch(obj){                case colorSelect:                    //TODO                    break;                case memorySelect:                    //TODO                    break;                case numSelect:                    //TODO                    break;            }        }    }})();colorSelect.onchange = function() {    mediator.changed(this);};memorySelect.onchange = function() {    mediator.changed(this);};numSelect.onchange = function() {    mediator.changed(this);};
  • 聊天室里

聊天室成员类:

function Member(name) {  this.name = name;  this.chatroom = null;}Member.prototype = {  // 发送消息  send: function (message, toMember) {    this.chatroom.send(message, this, toMember);  },  // 接收消息  receive: function (message, fromMember) {    console.log(`${fromMember.name} to ${this.name}: ${message}`);  }}

聊天室类:

function Chatroom() {  this.members = {};}Chatroom.prototype = {  // 增加成员  addMember: function (member) {    this.members[member.name] = member;    member.chatroom = this;  },  // 发送消息  send: function (message, fromMember, toMember) {    toMember.receive(message, fromMember);  }}

测试一下:

const chatroom = new Chatroom();const bruce = new Member('bruce');const frank = new Member('frank');chatroom.addMember(bruce);chatroom.addMember(frank);bruce.send('Hey frank', frank);//输出:bruce to frank: hello frank

优点

  • 使各对象之间耦合松散,而且可以独立地改变它们之间的交互

  • 中介者和对象一对多的关系取代了对象之间的网状多对多的关系

  • 如果对象之间的复杂耦合度导致维护很困难,而且耦合度随项目变化增速很快,就需要中介者重构代码

缺点

  • 系统中会新增一个中介者对象,因为对象之间交互的复杂性,转移成了中介者对象的复杂性,使得中介者对象经常是巨大的。中介 者对象自身往往就是一个难以维护的对象。

关于"web前端中中介者模式的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

中介 中介者 对象 之间 模式 作用 复杂 事件 消息 篇文章 聊天室 表单 处理 耦合 前端 示例 分析 松散 复杂性 成员 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 趣德网络技术有限公司 软件开发怎么找外包 ns帐号可以登录不同服务器吗 抖音视频服务器的ip地址是多少 振诺互联网科技有限公司 mysql数据库密码被黑 使用dbeaver备份数据库 软件开发完成无法提供维护 软件开发工程师外包价格 怀旧服服务器战士的毕业装备 脑叶工司中央数据库 漳平应用软件开发哪家靠谱 数据库学生表 课程表 金蝶使用华为服务器吗 关于网络安全普及的新闻 巨杉数据库技术 韩国服务器地址 服务器如何给别人管理员 春考网络安全技术学那本书 根据《网络安全法》考试 医学人工智能数据库发展规划 计算机网络技术的考试题 海外服务器ip免费地址怎么用 旅游软件开发优势 一个任务关联多个任务数据库 怎样购买弹性云服务器 dhcp服务器起始及结束ip 网络安全交换机 无锡雷华网络技术有限公司官网 服务器一直正在输入数字
0