美文网首页
结构型模式之适配器

结构型模式之适配器

作者: 0爱上1 | 来源:发表于2018-04-26 11:41 被阅读27次

定义:

对比现实生活中的场景,我们有个两孔插座,一个三头插头,如何将我们的插头插入到插座中呢?试想,如果没有一个转接的工具或者适配的工具,是不可能实现的。

那么这个时候适配器出现了,它可以将我们的三头插头适配成两头的插头,这样就可以使用两孔插座啦

原理:

源类(被适配的类,我们已有的类)即:三头插头

适配器 即:转接头

目标类(我们想要的接口)即两头插头

其实只要理解为。将我们已有的经过适配器转为我们想要的即可。

代码实现:

被适配对象:三头插头

1

目标类:两头插头接口,即客户端想要使用的接口,这里的客户端我们可以理解为一个两孔的插座。

2

适配器类:按照目标接口的要求对被适配对象实现接口形式的适配转换。即可以理解为将三头插头转为两头插头的类

3

客户端:调用目标类的类或者程序, 此处可以理解为一个两孔的插座,需要调用两头的插头接口以接入电源。

4

最终调用结果:

5

以上实现基于类适配器的方式实现。即适配器需要继承我们的被适配对象类,再实现我们的目标类接口。

适配器模式的应用场景:

当你想要使用的类无法提供符合要求的接口的时候,即我们的三头插头是我们想要使用的类,但是它无法提供我们符合要求的两头插头的接口,因为我们的客户端(两孔插座)是需要使用两头插头接口的。所以这个时候就可以采用适配器模式。作为接口转换工具。

缺点:

对于开发和维护来说,增加了一层额外的代码抽象。

适配器种类对比:

以上代码基于类适配器实现,下面分析类适配器和对象适配器的不同点

类适配器:

    适配器继承被适配类,并实现目标类接口,完成适配工作,可以实现重写被适配对象的方法

5

    但只能一个适配器适配一个被适配类,如果对于需要一个适配器适配多个被适配对象的化,就不行了,此时就需要使用对象适配器了。

    目标类必须为接口形式,比较局限。因为java的单继承,已经继承了被适配类了。

对象适配器:灵活,用的比较多

    适配器类不需要继承被适配器类,而是采用组合被适配器类的形式。

    单个适配器与多个适配对象一起工作,包括适配对象及其所有子类,还能够同时向所有适配对象添加功能。

    但是很难去重写被适配器的方法。

相关文章

  • 23种设计模式

    创建型 工厂模式 ( 工厂方法模式, 抽象工厂模式, 建造者模式 ) 单例模式 原型模式 结构型 适配器模式 装饰...

  • 设计模式分类汇总

    结构型 适配器模式 组合模式 桥接模式 代理模式 装饰者模式 门面模式 享元模式 行为型 责任链模式 命令模式 解...

  • [Python-设计模式] 结构型模式- 适配器模式

    适配器模式 适配器模式是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作。 适配器模式结构 对象适配器 实...

  • 结构型模式:适配器模式

    文章首发:结构型模式:适配器模式 七大结构型模式之一:适配器模式。 简介 姓名 :适配器模式 英文名 :Adapt...

  • 前篇

    一、常见的设计模式? 创建型:工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式 结构型:适配器模式、桥接...

  • 设计模式(6) 适配器模式

    结构型模式 适配器模式 类适配器和对象适配器 结构型模式 结构型模式的重点在于如何通过灵活的体系组织不同的对象,并...

  • 适配器模式

    目录 1、什么是适配器模式? 2、适配器模式结构? 3、如何实现适配器模式? 4、适配器模式的特点? 5、适配器模...

  • JavaScript设计模式

    设计模式分类(23种设计模式) 创建型单例模式原型模式工厂模式抽象工厂模式建造者模式 结构型适配器模式装饰器模式代...

  • 关于JavaScript设计模式的学习(JavaScript d

    上周写了关于创建型的设计模式,这次是关于结构型。接着上一篇来写了。 2.结构型 2.1适配器模式 2.2组合模式 ...

  • 设计模式之适配器模式

    设计模式之适配器模式 1. 模式定义 适配器模式又称包装器模式,属于结构型模式,它可以将一个接口转换成客户希望的另...

网友评论

      本文标题:结构型模式之适配器

      本文链接:https://www.haomeiwen.com/subject/xtdplftx.html