设计模式大白话之适配器模式

将一个类的接口转换成另一个接口,以便让原本不兼容的类可以一起工作。让我们通过一个更贴近日常生活的例子来展示适配器模式:假设你有一台只支持USB接口的电脑,但是你想要使用一个只有RJ45网线接口的网络适配器卡。在这种情况下,你需要一个适配器来连接这两个不兼容的接口

目标:使电脑能够通过RJ45接口连接网络

1. 定义目标接口(电脑的USB接口)

java 复制代码
public interface Usb {
    void connectUsb();
}

2. 定义现有类(RJ45网络适配器卡)

java 复制代码
public class NetworkCardRJ45 {
    public void connectRJ45() {
        System.out.println("Connected RJ45 network card.");
    }
}

3. 创建适配器类(RJ45转USB适配器)

java 复制代码
public class Rj45ToUsbAdapter implements Usb {
    private NetworkCardRJ45 networkCardRJ45;

    public Rj45ToUsbAdapter(NetworkCardRJ45 networkCardRJ45) {
        this.networkCardRJ45 = networkCardRJ45;
    }

    @Override
    public void connectUsb() {
        networkCardRJ45.connectRJ45();
        System.out.println("Adapter converted RJ45 to USB.");
    }
}

4. 使用适配器

java 复制代码
public class Main {
    public static void main(String[] args) {
        NetworkCardRJ45 networkCard = new NetworkCardRJ45();
        Usb usbAdapter = new Rj45ToUsbAdapter(networkCard);
        usbAdapter.connectUsb();
    }
}

解释

  • Usb 接口代表了电脑的USB接口,它有一个 connectUsb() 方法。
  • NetworkCardRJ45 类代表了RJ45网络适配器卡,它有一个 connectRJ45() 方法,用于连接网络。
  • Rj45ToUsbAdapter 类实现了 Usb 接口,它内部持有了一个 NetworkCardRJ45 对象。当调用 connectUsb() 方法时,适配器会调用 NetworkCardRJ45connectRJ45() 方法,并在之后输出一条信息表示转换完成。

这样,即使你的电脑只有USB接口,你也可以通过使用适配器来连接RJ45网络适配器卡,达到连接网络的目的

总结一句话:适配器模式无非是套了个壳,把要适配的放进去,然后调它自己的方法。

它的核心在于创建一个新的类(适配器),这个类包含或委托给需要适配的类,并公开一个与期望接口相匹配的新接口。适配器的主要任务是将外部接口的调用转换为对内部被适配类的正确调用。

举个再简单点的例子,假设你有一个旧的电器设备,它使用的是圆形插头,但是你的墙上的插座是扁平的。你需要一个适配器(插头转换器),这个适配器有一个圆形插孔,可以插入你的电器设备,而另一端则是扁平的插头,可以插入墙上的插座。适配器没有改变电器设备或插座的任何功能,它只是提供了必要的接口转换,使得两者可以协同工作。

相关推荐
君鼎4 小时前
C++设计模式——单例模式
c++·单例模式·设计模式
敲代码的 蜡笔小新6 小时前
【行为型之中介者模式】游戏开发实战——Unity复杂系统协调与通信架构的核心秘诀
unity·设计模式·c#·中介者模式
令狐前生6 小时前
设计模式学习整理
学习·设计模式
敲代码的 蜡笔小新8 小时前
【行为型之解释器模式】游戏开发实战——Unity动态公式解析与脚本系统的架构奥秘
unity·设计模式·游戏引擎·解释器模式
JANYI20189 小时前
嵌入式设计模式基础--C语言的继承封装与多态
java·c语言·设计模式
敲代码的 蜡笔小新13 小时前
【行为型之观察者模式】游戏开发实战——Unity事件驱动架构的核心实现策略
观察者模式·unity·设计模式·c#
琢磨先生David16 小时前
构建优雅对象的艺术:Java 建造者模式的架构解析与工程实践
java·设计模式·建造者模式
敲代码的 蜡笔小新1 天前
【行为型之策略模式】游戏开发实战——Unity灵活算法架构的核心实现策略
unity·设计模式·c#·策略模式
_yingty_1 天前
Java设计模式-策略模式(行为型)
java·设计模式·策略模式
JAVA坚守者1 天前
Java 性能调优全解析:从设计模式到 JVM 的 7 大核心方向实践
适配器模式·并发编程·jvm 调优·javacc·熔断机制·java 性能优化·jmh 测试