我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript设计模式中的桥接和中介者模式怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript设计模式中的桥接和中介者模式怎么实现

这篇文章主要介绍“JavaScript设计模式中的桥接和中介者模式怎么实现”,在日常操作中,相信很多人在JavaScript设计模式中的桥接和中介者模式怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript设计模式中的桥接和中介者模式怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、桥接设计模式

桥接设计模式是一种偏向于组合的设计模式,而非继承的设计模式,实现的细节从一个模块推送给另一个具有单独模块的对象

桥接设计模式在开发中常用于事件监控,还有数组的一些方法都能够体现出来桥接设计模式的思想,例如数组方法的forEach方法

桥接设计模式在工作中的使用

有一个很多页面的网站,我们预期是让用户可以选择修改网站的主体,如果给每个页面都创建一个主题页面的副本,这样做会很麻烦,这个时候我们就可以使用桥接设计模式进行实现,进行控制网站的主题颜色,通过创建单独的主题根据用户的选择进行加载,接下来我们来实现一下

先声明俩个主题模块类,一个是外观主题,一个是内容主题,里面拥有一个方法,该方法可以进行设置主题颜色

// 外观主题        class Large {            constructor(theme) {                // 主题颜色                this.theme = theme;            }            // 设置主题颜色            setThemeColor() {            console.log("Large主题颜色设置为" + this.theme.getColor());            }        }        // 内容主题        class Small {            constructor(theme) {                // 主题颜色                this.theme = theme;            }            // 设置主题颜色            setThemeColor() { console.log("Small主题颜色设置为" + this.theme.getColor());            }        }

在声明几个主题颜色类,类里面有一个方法可以获取当前主题颜色

       class RedTheme {            getColor() {               return "red";            }        }        class BlueTheme {            getColor() {                return "blue";            }        }        class YellowTheme {            getColor() {                return "yellow";            }        }

我们进行创建主题模块类,在把主题颜色类传递过去调用主题模块设置主题颜色的方法

      // 创建主题颜色        const RedTheme = new RedTheme();        const BlueTheme = new BlueTheme();        const YellowTheme = new YellowTheme();        // 主题模块     const Large = new Large(RedTheme);        const Small = new Small(BlueTheme);        // 设置外观主题和内容主题        Large.setThemeColor()        Small.setThemeColor()

桥接设计模式的优势在于就算其中某一模块发生变化,也不会影响其他模块的使用,降低了代码的耦合度,同时因桥接设计模式要求两个模块之间没有耦合关系,否则无法完成独立的变化,所以也是比继承方案更好的解决方案,提高了代码的可扩展性,但是因此桥接设计模式也提高了整体代码的复杂程度

二、JavaScript中介者模式

中介者设计模式是指通过一个中介者对象封装一系列的对象交互,中介者对象可以让每个对象不需要显式地相互引用,从降低耦合度,当其中一个对象发生改变时,只需要通知中介者对象即可

JavaScript设计模式中的桥接和中介者模式怎么实现

生活中的中介者

在生活中我们也经常使用到中介者设计模式,例如,医院的120急救中心调度站,当我们打电话给120急救中心时,急救中心120调度员接到电话会指派最近的急救车辆去我们身边,急救车辆只需要和急救中心调度台通信就能确定路线和需要救援人员位置,而不需要和所有的急救车辆通信,同时急救中心调度台作为中介者,知道每个车辆的位置与行驶路线,所以可以安排所有急救车辆的路线和调配

中介者设计模式案例

我们来照着急救中心调度站的例子来实现一下

创建一个急救中心调度站,里面有俩个属性代表救护车编号和需要急救的病人,还有俩个方法给急救车分配任务,以及询问当前急救车辆是否有急救任务

        class FirstAid {            constructor(identifier) {                // 救护车编号                this.identifier = identifier;                // 需要救得病人                this.patient = null;            }            // 添加病人            setPatient(patient) {                this.patient = patient;            }            // 是否已有急救任务            receivePatient() {                // 通过是否分配病人进行判断                if (this.patient) {                    console.log(this.identifier + '已接收病人');                } else {                    console.log(this.identifier + '未接收病人,可接收急救任务');                }            }        }

创建急救车实例,并进行分派任务

     // 创建急救车        let first1 = new FirstAid('急救车1');        let first2 = new FirstAid('急救车2');        //分派急救任务        first1.setPatient('小孩');        //询问是否可接收急救任务        first1.receivePatient();        first2.receivePatient();

业务中的中介者

中介者设计模式在我们书写业务中也经常会用到,比如电商网站做的购物车需求,该需求中有存在商品选择表单,颜色选择表单  ,购买数量表单等等,都会触发change事件,这个时候我们就可以通过中介者进行转发处理这些事件,实现每个事件的解耦,我们只需要维护中介者对象即可

redux和vuex都属于中介者设计模式的实际应用,我们把共享的数据抽离成一个store,每个都通过store这个中介者来进行操作

中介者设计模式通过让对象之间的关联性变低降低了代码耦合度提高了可复用性,通过将控制逻辑集中,提高代码可维护性,但是中介者在其中承担了较多的责任,一旦中介者出现问题,整个系统就都会受到影响

到此,关于“JavaScript设计模式中的桥接和中介者模式怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript设计模式中的桥接和中介者模式怎么实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript设计模式中的桥接和中介者模式怎么实现

这篇文章主要介绍“JavaScript设计模式中的桥接和中介者模式怎么实现”,在日常操作中,相信很多人在JavaScript设计模式中的桥接和中介者模式怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”J
2023-07-02

Java设计模式的桥接模式怎么实现

这篇文章主要讲解了“Java设计模式的桥接模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java设计模式的桥接模式怎么实现”吧!什么是桥接模式桥接(Bridge)模式的定义如下:
2023-06-30

PHP设计模式之中介者模式怎么实现

这篇“PHP设计模式之中介者模式怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP设计模式之中介者模式怎么实现”文
2023-07-05

Java设计模式之桥接模式怎么实现

这篇文章主要介绍“Java设计模式之桥接模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java设计模式之桥接模式怎么实现”文章能帮助大家解决问题。一、什么是桥接模式:桥接,顾名思义,就是
2023-07-02

javascript设计模式中的订阅者模式怎么实现

本篇内容介绍了“javascript设计模式中的订阅者模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一. 初识代理模式代理模式是
2023-06-26

JavaScript设计模式中的观察者模式怎么实现

本文小编为大家详细介绍“JavaScript设计模式中的观察者模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript设计模式中的观察者模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知
2023-07-02

JavaScript设计模式之中介者模式详解

当对象之间进行多对多引用时,进行开发,维护,阅读时将变得特别痛苦。在这些对象之间添加中间者,使它们都只与中介者,当中介者处理完一个对象的请求后,将结果通知于其他对象
2022-11-13

Java设计模式之中介者模式的实现方式

Java中介者模式是一种行为型设计模式,它通过一个中介者对象来协调多个对象之间的交互,降低对象之间的耦合度,提高系统的可维护性和可扩展性。本文将介绍该设计模式的原理、使用场景和实现方法
2023-05-18

Java设计模式的桥接模式如何实现

本文小编为大家详细介绍“Java设计模式的桥接模式如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java设计模式的桥接模式如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是桥接模式桥接(Bri
2023-07-06

.Net行为型设计模式之中介者模式怎么实现

这篇文章主要介绍“.Net行为型设计模式之中介者模式怎么实现”,在日常操作中,相信很多人在.Net行为型设计模式之中介者模式怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”.Net行为型设计模式之中介者
2023-06-30

PHP结构型设计模式之桥接模式怎么实现

本篇内容介绍了“PHP结构型设计模式之桥接模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!桥接模式(Bridge Pattern)
2023-07-05

.Net结构型设计模式之桥接模式怎么实现

本篇内容介绍了“.Net结构型设计模式之桥接模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、动机(Motivation)在很多
2023-06-30

javascript设计模式中的策略模式怎么实现

这篇文章主要讲解了“javascript设计模式中的策略模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript设计模式中的策略模式怎么实现”吧!一. 认识策略模式策略
2023-06-26

Golang设计模式中的桥接模式详细讲解

桥接模式是一种结构型设计模式,通过桥接模式可以将抽象部分和它的实现部分分离,本文主要介绍了GoLang桥接模式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2023-01-11

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录