java设计模式之 - 适配器模式

想学习springboot,springboot+vue项目,SpringCloudAlibaba的小伙伴,可以免费观看视频地址:

html 复制代码
springcloudalibaba地址:
https://www.bilibili.com/video/BV1cFDEYWEkY/?vd_source=14d27ec13a4737c281b7c79463687112
html 复制代码
springboot地址:
https://www.bilibili.com/video/BV1nkmRYSErk/?vd_source=14d27ec13a4737c281b7c79463687112
html 复制代码
springboot+vue案例地址:
https://www.bilibili.com/video/BV1JLSEYJETc/?vd_source=14d27ec13a4737c281b7c79463687112

**适配器模式(Adapter Pattern)**是一种结构型设计模式,它允许不兼容的接口之间的协同工作,通常用于将一个类的接口转换成客户端期望的另一个接口。适配器让那些接口不兼容的类可以一起工作。

适配器模式的主要角色:

  1. 目标接口(Target):客户期望的接口。
  2. 适配者(Adaptee):需要被适配的类。
  3. 适配器(Adapter):将适配者接口转换为目标接口的类。

简单案例:

假设我们有一个 Adaptee 类,它有一个 specificRequest() 方法,但是客户期望的接口是 Target 接口中的 request() 方法。我们的任务是创建一个 Adapter 类来使得 Adaptee 类能够以 Target 接口的形式被使用。

1. 定义目标接口(Target)
java 复制代码
public interface Target {
    void request();
}
2. 创建适配者类(Adaptee)
java 复制代码
public class Adaptee {
    public void specificRequest() {
        System.out.println("Adaptee: Specific request executed.");
    }
}
3. 创建适配器类(Adapter)
java 复制代码
public class Adapter implements Target {
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void request() {
        adaptee.specificRequest();
    }
}
4. 客户端代码
java 复制代码
public class Client {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target target = new Adapter(adaptee);
        target.request(); // 这将调用 Adaptee 的 specificRequest() 方法
    }
}

在这个案例中,Adapter 类实现了 Target 接口,并在内部持有 Adaptee 类的实例。Adapter 类的 request() 方法调用了 Adaptee 类的 specificRequest() 方法,从而使得 Adaptee 类能够以 Target 接口的形式被使用。

当你运行 Client 类的 main 方法时,你将看到以下输出:

复制代码
Adaptee: Specific request executed.

这表明适配器模式成功地将 Adaptee 类适配到了 Target 接口,使得客户端代码可以无缝地使用 Adaptee 类的功能。

相关推荐
考虑考虑3 小时前
JDK26中的Map.ofLazy
java·后端·java ee
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源