适配器模式的作用是解决两个软件实体间的接口不兼容的问题。使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体可以一起工作。港式插头转换器

适配器的别名是包装器(wrapper),这是一个相对简单的模式。在程序开发中有许多这样的场景:当我们试图调用模块或者对象的某个接口时,却发现这个接口的格式并不符合目前的需求。这时候有两种解决办法,第一种是修改原来的接口实现,但如果原来的模块很复杂,或者我们拿到的模块是一段别人编写的经过压缩的代码,修改原接口就显得不太现实了。第二种办法是创建一个适配器,将原接口转换为客户希望的另一个接口,客户只需要和适配器打交道。

现实中的适配器

适配器在现实生活的应用非常广泛,接下来我们来看几个现实生活中的适配器模式。

  • 港式插头转换器
  • 电源适配器
  • USB转接口

适配器模式的应用

如果现有的接口已经能够正常工作,那我们就永远不会用上适配器模式。适配器模式是一种“亡羊补牢”的模式,没有人会在程序的设计之初就使用它。因为没有人可以完全预料到未来的事情,也许现在好好工作的接口,未来的某天却不再适用于新系统,那么我们可以用适配器模式把旧接口包装成一个新的接口,使它继续保持生命力。

一句话概括就是创建一个方法可以使老的数据结构转换成咱们新需要的数据结构

结语

适配器模式是一对相对简单的模式。在本书提到的设计模式中,有一些模式跟适配器模式的结构非常相似,比如装饰者模式、代理模式和外观模式(参见第19章)。这几种模式都属于“包装模式”,都是由一个对象
来包装另一个对象。区别它们的关键仍然是模式的意图。

  • 适配器模式主要用来解决两个已有接口之间不匹配的问题,它不考虑这些接口是怎样实现的,也不考虑它们将来可能会如何演化。适配器模式不需要改变已有的接口,就能够使它们协同作用。

  • 装饰者模式和代理模式也不会改变原有对象的接口,但装饰者模式的作用是为了给对象增加功能。装饰者模式常常形成一条长的装饰链,而适配器模式通常只包装一次。代理模式是为了控制对对象的访问,通常也只包装一次。

  • 外观模式的作用倒是和适配器比较相似,有人把外观模式看成一组对象的适配器,但外观模式最显著的特点是定义了一个新的接口。

JavaScript设计模式之适配器模式相关推荐

  1. JavaScript设计模式(三):结构型设计模式-外观模式、适配器模式、代理模式、装饰者模式、桥接模式、组合模式、享元模式

    JavaScript设计模式 - 结构型设计模式 套餐服务-外观模式 外观模式(Facade) 水管弯弯-适配器模式 适配器模式(Adapter) 适配异类框架 参数适配 牛郎织女-代理模式 代理模式 ...

  2. JavaScript设计模式与开发实践——JavaScript的多态

    "多态"一词源于希腊文polymorphism,拆开来看是poly(复数)+ morph(形态)+ ism,从字面上我们可以理解为复数形态. 多态的实际含义是:同一操作作用于不同的 ...

  3. 《JavaScript设计模式与开发实践》阅读摘要

    <JavaScript设计模式与开发实践>作者:曾探 系统的介绍了各种模式,以及js中的实现.应用,以及超大量高质量代码,绝对值得一读 面向对象的js 静态类型:编译时便已确定变量的类型 ...

  4. JavaScript设计模式——单例模式的理解与应用

    JavaScript设计模式--对单例模式的一些见解 JavaScript设计模式主要分类: ①创建型设计模式,例如单例模式.工厂模式 ②结构型设计模式,例如装饰者模式.适配器模式 ③行为型设计模式, ...

  5. javascript设计模式系列 - LukeLin - 博客园

    javascript设计模式系列 创建型: 1.抽象工厂模式(Abstract Factory) 2.构建者模式(Builder) 3.工厂方法模式(Factory Method) 4.原型模式(Pr ...

  6. 模式(一)javascript设计模式

    模式有三种:Architectural Pattern.Design Pattern.Coding Pattern,即:框架模式.设计模式.编程模式.本文主要讲解javascript中的设计模式,好的 ...

  7. JavaScript 设计模式核⼼原理与应⽤实践 之 结构型设计模式

    JavaScript 设计模式核⼼原理与应⽤实践 之 结构型设计模式 结构型:装饰器模式--对象装上它,就像开了挂 装饰器模式,又名装饰者模式.它的定义是"在不改变原对象的基础上,通过对其进 ...

  8. javascript设计模式_JavaScript 设计模式 学习总结

    ---------------------------------------------------------------------------------------------------- ...

  9. JavaScript设计模式返璞归真

    闲话 本文写于2月初,原分享在有道云笔记上,现在转移到此.现阶段对于设计模式的理解还没有能力对本文的框架做出大的翻新,所以暂且原样搬过来了. 本文不从名目众多的设计模式谈起,而是为语言能力.代码优化. ...

  10. JavaScript设计模式入坑

    JavaScript设计模式入坑 介绍 设计模式编写易于维护的代码. 设计模式的开创者是一位土木工程师.Σ( ° △ °|||)︴,写代码就是盖房子. 模式 模式一种可以复用的解决方案.解决软件设计中 ...

最新文章

  1. 未来几年,BCH超越BTC的路径是什么?
  2. 记asp.net VB与C# 页面参数传值
  3. 【Android 进程保活】应用进程拉活 ( 账户同步拉活 | 账号添加 | 源码资源 )
  4. STM32时钟树学习笔记
  5. 数据结构-----基于双数组的Trie树
  6. 自动装箱,拆箱和NoSuchMethodError
  7. Effective Java(一)—— 创建和销毁对象
  8. 第十二课:实验二 循环链表实验
  9. 全局拉普拉斯平滑之(1)Strucutre extraction from texture via relative total variation及稀疏矩阵求解
  10. 单分支 两路分支和多分支的if结构_程序选择结构
  11. 尽量干净地卸载360
  12. Reading Note(3)——基于FPGA的动态可重构特性探索新型加速器架构
  13. 强烈推荐10套开源免费的高品质源码,源码免费下载
  14. 英语语法-----一般现在时
  15. K近邻算法python实现并显示决策边界
  16. 2020CADCG专题报告笔记 Jittor计图 深度学习框架
  17. WAF防火墙有什么用
  18. android数据线投屏电视机,手机投屏电视的几种方式点评
  19. RuntimeError: Trying to backward through the graph a second time (or directly access saved tensors a
  20. LA 4394 String painter 区间DP -

热门文章

  1. 停车场管理系统软件概要设计说明书
  2. 图像识别利用计算机对图像进行,图像识别方法
  3. 黑莓开发新手入门教学帖,如何制作一个能控制LED颜色的程序(一)
  4. 公式计算机实现,数学公式的计算机表达(精选).doc
  5. dex转java工具_安卓dex反编译工具(dex-translator)
  6. [Android]SurfaceView绘制奔跑的小人
  7. 机器人——人类工作和生活的助手(科普)
  8. Python 词云可视化【爆肝之作】
  9. i79750h和i511400h哪个好
  10. ICEM 网格划分技巧(21-5)