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 类的功能。

相关推荐
only-qi13 分钟前
深入理解MySQL中的MVCC:多版本并发控制的实现原理
java·数据库·mysql
ZePingPingZe18 分钟前
静态代理、JDK和Cglib动态代理、回调
java·开发语言
万粉变现经纪人20 分钟前
如何解决 pip install 代理报错 SOCKS5 握手失败 ReadTimeoutError 问题
java·python·pycharm·beautifulsoup·bug·pandas·pip
风月歌20 分钟前
2025-2026计算机毕业设计选题指导,java|springboot|ssm项目成品推荐
java·python·小程序·毕业设计·php·源码
heartbeat..23 分钟前
Web 状态管理核心技术详解 + JWT 双 Token (Access/Refresh Token) 自动登录
java·网络·jwt·token
Seven9724 分钟前
剑指offer-57、二叉树的下一个节点
java
DYS_房东的猫25 分钟前
Spring Boot集成华为云OBS实现文件上传与预览功能(含安全下载)
java·spring boot
曹轲恒29 分钟前
jvm 局部变量表slot复用问题
java·开发语言·jvm
小王师傅6630 分钟前
【轻松入门SpringBoot】actuator健康检查(中)-group,livenessState,readinessState
java·spring boot·后端
青w韵32 分钟前
最新SpringAI-1.1.2接入openai兼容模型
java·学习·ai·springai