位置: 编程技术 - 正文

深入理解JavaScript系列(44):设计模式之桥接模式详解(深入理解javascript特性)

编辑:rootadmin

推荐整理分享深入理解JavaScript系列(44):设计模式之桥接模式详解(深入理解javascript特性),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入理解javascript,深入理解javascript,深入理解计算机系统,深入理解javascript特性,深入理解新发展理念,深入理解javascript,深入理解javascript特性,深入理解javascript特性,内容如对您有帮助,希望把文章链接给更多的朋友!

介绍

桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化。

正文

桥接模式最常用在事件监控上,先看一段代码:上述代码,有个问题就是getBeerById必须要有浏览器的上下文才能使用,因为其内部使用了this.id这个属性,如果没用上下文,那就歇菜了。所以说一般稍微有经验的程序员都会将程序改造成如下形式:实用多了,对吧?首先ID可以随意传入,而且还提供了一个callback函数用于自定义处理函数。但是这个和桥接有什么关系呢?这就是下段代码所要体现的了:这里的getBeerByIdBridge就是我们定义的桥,用于将抽象的click事件和getBeerById连接起来,同时将事件源的ID,以及自定义的call函数(console.log输出)作为参数传入到getBeerById函数里。

这个例子看起来有些简单,我们再来一个复杂点的实战例子。

实战XHR连接队列

我们要构建一个队列,队列里存放了很多ajax请求,使用队列(queue)主要是因为要确保先加入的请求先被处理。任何时候,我们可以暂停请求、删除请求、重试请求以及支持对各个请求的订阅事件。

基础核心函数在正式开始之前,我们先定义一下核心的几个封装函数,首先第一个是异步请求的函数封装:

上述封装的自执行函数是一个通用的Ajax请求函数,相信属性Ajax的人都能看懂了。

接下来我们定义一个通用的添加方法(函数)的方法:最后再添加关于数组的2个方法,一个用于遍历,一个用于筛选:因为有的新型浏览器已经支持了这两种功能(或者有些类库已经支持了),所以要先判断,如果已经支持的话,就不再处理了。

深入理解JavaScript系列(44):设计模式之桥接模式详解(深入理解javascript特性)

观察者系统观察者在队列里的事件过程中扮演着重要的角色,可以队列处理时(成功、失败、挂起)订阅事件:

队列主要实现代码首先订阅了队列的主要属性和事件委托:

然后通过DED.Queue.method的链式调用,则队列上添加了很多可用的方法:代码看起来很多,折叠以后就可以发现,其实就是在队列上定义了flush, setRetryCount, setTimeout, add, pause, dequeue, 和clear方法。

简单调用

桥接呢?

上面的调用代码里并没有桥接,那桥呢?看一下下面的完整示例,就可以发现处处都有桥哦:在这个示例里,你可以做flush队列,暂停队列,删除队列里的请求,清空队列等各种动作,同时相信大家也体会到了桥接的威力了。

总结

桥接模式的优点也很明显,我们只列举主要几个优点:

1.分离接口和实现部分,一个实现未必不变地绑定在一个接口上,抽象类(函数)的实现可以在运行时刻进行配置,一个对象甚至可以在运行时刻改变它的实现,同将抽象和实现也进行了充分的解耦,也有利于分层,从而产生更好的结构化系统。2.提高可扩充性3.实现细节对客户透明,可以对客户隐藏实现细节。

同时桥接模式也有自己的缺点:

大量的类将导致开发成本的增加,同时在性能方面可能也会有所减少。

深入理解JavaScript系列():设计模式之状态模式详解 介绍状态模式(State)允许一个对象在其内部状态改变的时候改变它的行为,对象看起来似乎修改了它的类。正文举个例子,就比如我们平时在下载东西

深入理解JavaScript系列():设计模式之原型模式详解 介绍原型模式(prototype)是指用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象。正文对于原型模式,我们可以利用JavaScript特有的

深入探讨javascript中的数据类型 学一门编程语言,无非两方面:一是语法,二是数据类型。类C语言的语法不外乎if、while、for、函数、算术运算等,面向对象的语言再加上object。语法只

标签: 深入理解javascript特性

本文链接地址:https://www.jiuchutong.com/biancheng/382869.html 转载请保留说明!

上一篇:深入理解JavaScript系列(47):对象创建模式(上篇)(深入理解计算机系统)

下一篇:深入理解JavaScript系列(43):设计模式之状态模式详解(深入理解新发展理念,推进供给侧结构性改革)

  • 半年奖个人所得税怎么算的
  • 印花税会计分录怎么做
  • 企业购入汽车可以抵扣增值税吗
  • 转账支付水电费属于什么会计科目
  • 企业所得税弥补亏损明细表怎么填写
  • 物业管理服务增值税2022
  • 报销销售部门差旅费
  • 汽车装饰属于什么服务
  • 消防检测需要资质吗?
  • 小规模纳税人的增值税账务处理
  • 企业接受外部劳务派遣用工支出税前扣除问题
  • 材料采购合同要盖章吗
  • 合并报表汇兑损益怎么填
  • 进项税小于销项税怎么处理
  • 退货没有红字发票怎么办
  • 外籍人员劳务费税率表
  • 福利费进项税额转出会计分录账务处理
  • 食堂费用计入应付职工薪酬吗
  • 会计费用涉及哪些科目?
  • 借其他应收贷应付
  • 出口退税挂靠业务如何做帐?
  • 赊销商品应收款
  • 投入的生产线应该怎么做
  • 印花税减半征收优惠政策2023
  • 增值税专用发票电子版
  • iphonexs如何强制关机重启
  • 公司股权转让怎么操作
  • 路由器隐藏ssid后果严重
  • springboot集成camunda+bpmn
  • 电梯安装包工头赚多少
  • 补缴的耕地占用税怎么做账
  • 营改增后哪些费用可以抵扣
  • 如何暂停win11更新
  • mac怎么不能升级系统
  • php 设计模式 鸟哥
  • 股权交易的重要性
  • 小企业会计准则适用于哪些企业
  • wordpress文章主题
  • 工程扣款 甲方账务处理
  • 最好的ph计
  • 如何配置phpstudy
  • php分层架构
  • 给大家分享几个网站
  • vuex中this.$store.commit和this.$store.dispatch的用法
  • laravel后端
  • 科目汇总表借方发生额等于贷方发生额吗
  • 权益法转成本法非同一控制下为什么不公允
  • 社保基数是按基本工资还是应发工资
  • 财务报表季报应付职工薪酬为负数
  • 弥补以前年度亏损报表怎么填
  • 公司过年买的红包封壳怎么做账
  • 高效快速编制会计分录如何做?
  • 怎么查企业历史
  • 本月应计提折旧额
  • 房产互换如何交税费
  • 可供出售金融资产新准则叫什么
  • 被财政收回的财物有哪些
  • 事业单位研究开设的课题
  • 疫情防控重点保障物资生产企业可以按月
  • 其他人挂靠公司交社保会计处理怎么做?
  • 公账发工资如何记账
  • windows cortana打开
  • centos sudoers
  • ubuntu2004分区教程
  • win7旗舰版系统怎么样
  • msoobe.exe是什么
  • 怎么优化win10系统
  • win7桌面图标全部变成了e而且打不开
  • linux 排序统计
  • Win10无法获取ipv4
  • cocos2d-x windows开发环境配置
  • android 快速开发
  • 什么是馥芮白
  • Node.js中的全局变量有哪些
  • 关于Python的lambda函数,以下选项
  • 网络ping大包
  • Unity for Absolute Beginners(一)
  • javascript获取数据类型
  • 简单的安卓代码
  • 出售144平方米以内的房子
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设