当前位置: 首页 > article >正文

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

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

springcloudalibaba地址:
https://www.bilibili.com/video/BV1cFDEYWEkY/?vd_source=14d27ec13a4737c281b7c79463687112
springboot地址:
https://www.bilibili.com/video/BV1nkmRYSErk/?vd_source=14d27ec13a4737c281b7c79463687112
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)
public interface Target {
    void request();
}
2. 创建适配者类(Adaptee)
public class Adaptee {
    public void specificRequest() {
        System.out.println("Adaptee: Specific request executed.");
    }
}
3. 创建适配器类(Adapter)
public class Adapter implements Target {
    private Adaptee adaptee;

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

    @Override
    public void request() {
        adaptee.specificRequest();
    }
}
4. 客户端代码
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 类的功能。


http://www.kler.cn/a/400971.html

相关文章:

  • 如何解决JAVA程序通过obloader并发导数导致系统夯住的问题 | OceanBase 运维实践
  • 百度智能云 VectorDB 优势数量 TOP 1
  • 远程jupyter lab的配置
  • 高斯数据库Postgresql死锁和锁表解决方法
  • Spark分布式计算中Shuffle Read 和 Shuffle Write的职责和区别
  • 华为ensp实验二--mux vlan的应用
  • AVL树(c++版)
  • 农业银行手机银行系统介绍
  • 苍穹外卖 软件开发流程
  • Elasticsearch实战应用-dsl语句
  • fpga spi回环
  • 【每日题解】3239. 最少翻转次数使二进制矩阵回文 I
  • Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍
  • MaaS模型即服务的优势与发展前景
  • 百度世界大会2024,展现科技改变生活的力量
  • Vue 生成二维码
  • 革命性AI搜索引擎!ChatGPT最新功能发布,无广告更智能!
  • Leetcode 回文数
  • 游戏引擎学习第17天
  • 使用合适的Prompt充分利用ChatGPT的能力
  • 如何用WordPress和Shopify提升SEO表现?
  • labview中连接sql server数据库查询语句
  • 一次需升级系统的wxpython安装(macOS M1)
  • Macmini中普通鼠标与TrackPad联动问题解决
  • openGauss 6.0.0单机部署(企业版)
  • 单机顶集群的大数据技术来了