把书读薄 | 《设计模式之美》设计模式与范式(结构型-适配器模式)(上)

简介: 本文对应设计模式与范式:结构型(51),适配器模式 (Adapter Pattern)。了解定义,适用场景、类适配器和对象适配器就差不多了~Tips:二手知识加工难免有所纰漏,感兴趣有时间的可自行查阅原文,谢谢。

0x1、定义


适配器,很好理解,比如手边的电脑电源适配器,它的作用就是将 220V的家用交流电 转换成 20V的直流电,又比如苹果笔记本电脑,只有 雷电接口,如果想用 USB接口的键鼠/网线,需要一个 扩展坞/转接头


网络异常,图片无法展示
|


将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能在一起工作的类可以一起工作,这就是适配器模式。


简单点说:


两个彼此间没有太大关联的类,想要交互完成某些事情,如果直接去改各自的接口,就显得有些繁琐了。可以加个 中间类,用它来协调两个类间的关系,完成相关业务。


适用场景


  • 封装有缺陷的接口设计 (如依赖的外部系统在接口设计方面有缺陷,隔离缺陷,对接口进行二次封装);


  • 统一多个类的接口设计 (某功能的实现依赖多个外部系统,接口适配为统一的接口定义,多态复用);


  • 替换依赖的外部系统


  • 兼容老版本接口 (要废弃的接口不直接删除,暂时保留标注为的deprecated,并将内部实现逻辑委托为新接口实现);


  • 适配不同格式的数据; (如Java中的Arrays.asList()将数组类型数据转换为集合类型);


  • 不同接口协议转换


0x2、类适配器


根据适配器类与适配器类的关系不同,分为 类适配器对象适配器 两种,前者使用 继承 关系 实现,后者使用 组合 关系实现。


写个简单的翻译转换例子~


// 需要适配的接口
public class English {
    void speakEnglish(String talk) {
        System.out.println("【英语】" + talk);
    }
}
// 目标接口
interface Chinese {
    void speakChinese(String talk);
}
// 适配器角色
public class ClassTranslator extends English implements Chinese {
    @Override
    public void speakChinese(String talk) {
        // 可调用父类方法或直接进行重写
        super.speakEnglish(talk);
        System.out.println("假装请求了翻译接口,输出翻译结果:【中文】玛卡巴卡");
    }
}
// 测试用例
public class AdapterTest {
    public static void main(String[] args) {
        Chinese translator = new ClassTranslator();
        translator.speakChinese("Ma ka ba ka");
    }
}


运行输出结果如下


网络异常,图片无法展示
|


UML类图如下


网络异常,图片无法展示
|


角色如下:


  • Target (目标接口) → 客户所期待的接口,目标是接口;


  • Adaptee (需要适配的类) → 又称适配者类;


  • Adapter (适配器) → 并继承适配者类,实现目标接口,按需重写、调用方法;


相关文章
|
6月前
|
设计模式 前端开发 Java
【设计模式】【结构型模式】适配器模式(Adpter)
一、入门 什么是适配器模式? 适配器模式是Java中常用的结构型设计模式,它的核心作用就像现实中的电源转换器一样---让原本不兼容的两个接口能够协同工作。 为什么要用适配器模式? 假设我们需要在电商系
156 10
|
10月前
|
设计模式 Java 开发者
「全网最细 + 实战源码案例」设计模式——适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,通过引入适配器类将一个类的接口转换为客户端期望的另一个接口,使原本因接口不兼容而无法协作的类能够协同工作。适配器模式分为类适配器和对象适配器两种,前者通过多重继承实现,后者通过组合方式实现,更常用。该模式适用于遗留系统改造、接口转换和第三方库集成等场景,能提高代码复用性和灵活性,但也可能增加代码复杂性和性能开销。
277 28
|
11月前
|
设计模式 JSON 前端开发
前端必须掌握的设计模式——适配器模式
适配器模式是一种结构型设计模式,用于使接口不兼容的对象能够相互合作。通过在客户端和系统之间引入一个“中间层”适配器,将不同类型的输入数据转换为系统能处理的标准格式,减轻系统的负担,提高扩展性和可维护性。例如,MacBook的扩展坞将多种接口(如HDMI、USB)转换为Type-C接口,实现多接口兼容。
|
设计模式 Java 程序员
Java设计模式-适配器模式(8)
Java设计模式-适配器模式(8)
105 2
|
设计模式 Java
Java设计模式之适配器模式
这篇文章详细讲解了Java设计模式中的适配器模式,包括其应用场景、实现方式及代码示例。
216 0
|
设计模式 XML 存储
【六】设计模式~~~结构型模式~~~适配器模式(Java)
文章详细介绍了适配器模式(Adapter Pattern),这是一种结构型设计模式,用于将一个类的接口转换成客户期望的另一个接口,使原本不兼容的接口能够一起工作,提高了类的复用性和系统的灵活性。通过对象适配器和类适配器两种实现方式,展示了适配器模式的代码应用,并讨论了其优点、缺点以及适用场景。
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
设计模式 Go 数据处理
iLogtail设计模式问题之在iLogtail中,为何需要使用适配器模式
iLogtail设计模式问题之在iLogtail中,为何需要使用适配器模式
|
设计模式 JavaScript 前端开发
js设计模式【详解】—— 适配器模式
js设计模式【详解】—— 适配器模式
100 0
|
设计模式 Java Android开发
Java设计模式:适配器模式的三种形式(五)
Java设计模式:适配器模式的三种形式(五)

热门文章

最新文章