位置: 编程技术 - 正文

深入理解JavaScript系列(39):设计模式之适配器模式详解(深入理解新发展理念)

编辑:rootadmin

推荐整理分享深入理解JavaScript系列(39):设计模式之适配器模式详解(深入理解新发展理念),希望有所帮助,仅作参考,欢迎阅读内容。

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

介绍

适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一些工作。速成包装器(wrapper)。

正文

我们来举一个例子,鸭子(Dock)有飞(fly)和嘎嘎叫(quack)的行为,而火鸡虽然也有飞(fly)的行为,但是其叫声是咯咯的(gobble)。如果你非要火鸡也要实现嘎嘎叫(quack)这个动作,那我们可以复用鸭子的quack方法,但是具体的叫还应该是咯咯的,此时,我们就可以创建一个火鸡的适配器,以便让火鸡也支持quack方法,其内部还是要调用gobble。

OK,我们开始一步一步实现,首先要先定义鸭子和火鸡的抽象行为,也就是各自的方法函数:然后再定义具体的鸭子和火鸡的构造函数,分别为:为了让火鸡也支持quack方法,我们创建了一个新的火鸡适配器TurkeyAdapter:

深入理解JavaScript系列(39):设计模式之适配器模式详解(深入理解新发展理念)

该构造函数接受一个火鸡的实例对象,然后使用Duck进行apply,其适配器原型是Duck,然后要重新修改其原型的quack方法,以便内部调用oTurkey.gobble()方法。其fly方法也做了一些改变,让火鸡连续飞5次(内部也是调用自身的oTurkey.fly()方法)。

调用方法,就很明了了,测试一下便可以知道结果了:

总结

那合适使用适配器模式好呢?如果有以下情况出现时,建议使用:

1.使用一个已经存在的对象,但其方法或属性接口不符合你的要求;2.你想创建一个可复用的对象,该对象可以与其它不相关的对象或不可见对象(即接口方法或属性不兼容的对象)协同工作;3.想使用已经存在的对象,但是不能对每一个都进行原型继承以匹配它的接口。对象适配器可以适配它的父对象接口方法或属性。

另外,适配器模式和其它几个模式可能容易让人迷惑,这里说一下大概的区别:

1.适配器和桥接模式虽然类似,但桥接的出发点不同,桥接的目的是将接口部分和实现部分分离,从而对他们可以更为容易也相对独立的加以改变。而适配器则意味着改变一个已有对象的接口。2.装饰者模式增强了其它对象的功能而同时又不改变它的接口,因此它对应程序的透明性比适配器要好,其结果是装饰者支持递归组合,而纯粹使用适配器则是不可能的。3.代理模式在不改变它的接口的条件下,为另外一个对象定义了一个代理。

深入理解JavaScript系列():设计模式之职责链模式详解 介绍职责链模式(Chainofresponsibility)是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿

深入理解JavaScript系列():代码复用模式(避免篇)详解 介绍任何编程都提出代码复用,否则话每次开发一个新程序或者写一个新功能都要全新编写的话,那就歇菜了,但是代码复用也是有好要坏,接下来的

深入理解JavaScript系列():对象创建模式(上篇) 介绍本篇主要是介绍创建对象方面的模式,利用各种技巧可以极大地避免了错误或者可以编写出非常精简的代码。模式1:命名空间(namespace)命名空间

标签: 深入理解新发展理念

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

上一篇:深入理解JavaScript系列(41):设计模式之模板方法详解(深入理解中国式现代化)

下一篇:深入理解JavaScript系列(38):设计模式之职责链模式详解(深入理解计算机系统)

  • 增值税留存比例50
  • 个人所得税申诉已受理多久出结果
  • 应交税费负数调整到其他非流动资产
  • 工资进成本还是费用
  • 主营业务收入没收到钱怎么做账
  • 财政拨款税收政策
  • 企业注销当月无法申报个税
  • 罚款收入需要开票吗
  • 什么是增值税差额征税政策
  • 劳务派遣公司收取劳务费应开具什么票
  • 其他综合收益是利润表项目吗
  • 借款合同印花税纳税期限
  • 增值税已抵扣还能退税吗
  • 住宿费增值税怎么算
  • 在固定资产中
  • 进口设备属于货物贸易吗
  • 没有走公户的发票费用怎么做账
  • 增值税税控系统技术维护费每年都可以抵扣吗
  • 苹果mac os x 怎样打开DVD播放程序
  • office自定义功能区
  • 电脑管家游戏加速怎么卸载
  • 收到苗木发票怎么做账
  • 购入的财务软件怎么入账
  • 网速不稳定的解决方法
  • Apache+php+mysql在windows下的安装与配置图解(最新版)
  • win10投影无反应
  • 根据新企业所得税法的规定,企业购买并实际使用
  • 识别税收风险点是什么
  • php ssl
  • electron 打包
  • 自愿放弃增值税优惠怎么写
  • php往数组中添加元素
  • Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
  • yolo系列的优缺点
  • 学python真的好就业吗
  • 什么是CHATGPT
  • linux的nfs如何使用
  • 售后租回交易形成融资租赁,销售时不确认处置损益
  • 同业代付业务会计核算
  • 企业送员工礼品怎么分享给团队
  • Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)
  • 流动资金包括哪些费用
  • mysql注入的修复方式
  • 金税四期有什么变化
  • 土地免缴土地使用税
  • 出口免税进项税怎么处理
  • 工程款多付了如何追回
  • 小规模纳税人销售自己使用过的物品
  • 生产成本制造费用结转
  • 政府补贴项目需要审批吗
  • 暂估费用的账务处理管理
  • 租车运货产生的费用
  • 改良设备的入账价值
  • 律师事务所优惠政策
  • 对公转账需要填写开户行吗
  • 登记会计账簿的注意事项
  • 什么是其他应收款科目
  • 日记账自动生成
  • Mysql执行sql文件
  • xp安装声卡驱动
  • win10快速切换到桌面快捷键
  • 苹果MAC电脑怎么砸壳应用app
  • slserv.exe - slserv进程是什么意思
  • windows的安装方式有哪些
  • 半自动化系统
  • windows关机音乐
  • bootstrap导航都有哪些
  • [置顶]游戏名 TentacleLocker
  • Android - Designtime Layout Attributes & Tools Attributes
  • python截取数据
  • 常见的java数据类型有哪些
  • java 使用jar包
  • 税务协查函回复的内容有哪些
  • 我国历年财政支出总额
  • 成都税务局网上办事大厅
  • 四川国税发票手机查询
  • 湖北安徽是一个地方吗
  • 江苏省个人社保参保证明打印
  • 新加坡国税局的电话号码
  • 美国汽车进口关税25%
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设