首页 > 编程语言 >Java学设计模式之适配器模式

Java学设计模式之适配器模式

时间:2024-05-09 15:26:00浏览次数:14  
标签:Java 适配器 接口 adaptee 模式 Adaptee 设计模式 public

一、适配器模式概念

1.1 什么是适配器模式

适配器模式是一种结构型设计模式,它提供了一种将不兼容的接口转化为兼容的接口的方式,从而使原本无法一起工作的类可以协同工作。适配器模式可以分为两种:对象适配器和类适配器。

1.2 对象适配器

对象适配器通过组合的方式,将不兼容的接口适配为所需的接口。这种方式通常使用一个适配器类来组合目标接口和现有接口,并将现有接口的方法转换为目标接口的方法。

1.3 类适配器

类适配器通过继承的方式,将不兼容的接口适配为所需的接口。这种方式通常使用多重继承(在 Java 中是继承类并实现接口)来实现适配。

二、对象适配器模式代码

2.1 目标接口

public interface Target {
    void request();
}

2.2 源接口

public class Adaptee {
    public void specificRequest() {
        System.out.println("Adaptee specificRequest");
    }
}

2.3 适配器

public class Adapter implements Target {

    private Adaptee adaptee;

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

    @Override
    public void request() {
        // 将目标接口的 request 方法转换为源接口的 specificRequest 方法
        adaptee.specificRequest();
    }
}

2.4 测试类

public class AdapterPatternTest {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target target = new Adapter(adaptee);
        // 调用目标接口的方法
        target.request();
        // 输出:Adaptee specificRequest
    }
}

三、类适配器模式代码

3.1 目标接口

3.2 源接口

3.3 适配器

3.4 测试类

四、总结

适配器模式的优点包括:

  • 增强了系统的灵活性和可扩展性。
  • 可以让不兼容的接口之间的代码协同工作。

缺点包括:

  • 增加了代码的复杂度。
  • 可能增加维护的成本。

适配器模式适用于希望让不同接口之间的代码可以协同工作的场景,例如希望使用现有库,但其接口不兼容时。

标签:Java,适配器,接口,adaptee,模式,Adaptee,设计模式,public
From: https://www.cnblogs.com/Linzj5950/p/18182307

相关文章

  • Java学设计模式之原型模式
    一、原型模式概念原型模式是一种创建型设计模式,其核心思想是通过复制现有对象来创建新对象,而不是通过实例化类来创建。这种方式可以提高创建对象的效率,特别是当对象的创建过程比较昂贵或复杂时。在原型模式中,原型对象是一个已经存在的对象,它作为新对象的模板。新对象通过复制原......
  • 国密算法SM3-java实现
    maven依赖<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.56</version></dependency> SM3Utilsimportorg.bouncycastle.crypto.digests.SM3Dig......
  • 国密算法SM4-java实现
    Maven依赖<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.56</version></dependency>SM4importjava.io.ByteArrayInputStream;importjava.......
  • Java学设计模式之建造者模式
    一、建造者模式概念1.1什么是建造者模式建造者模式是一种创建型设计模式,用于将一个复杂对象的构建过程与其表示分离,以便同样的构建过程可以创建不同的表示。它允许客户端通过相同的构建过程来构建不同的产品。建造者模式通常涉及以下几个角色:产品(Product):表示被构建的复杂对......
  • [LeetCode] 最短的桥 双BFS Java
    Problem:934.最短的桥目录思路复杂度Code思路先找到第一个岛屿,根据每一个岛屿的岛屿块的位置多源查找这个块与第二个岛屿的距离,先找到的就是最少的距离同时,将已遍历过的岛屿标记为-1,避免重复入队复杂度时间复杂度:添加时间复杂度,示例:$O(n^2)$空间复杂度:添......
  • 国密算法SM2-java实现
    Maven依赖<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.56</version></dependency>工具类importjava.math.BigInteger;publicclassUtil{......
  • java测试框架Junit5进阶知识点
    声明参数化导入注解<!--junit5新的编程和扩展模型--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.8.2</version>......
  • Java-读取resource目录下的文件并返回给前端
    我在项目的resource目录下面放了一个模板文件,用来供用户下载提供一个接口给前端,用来下载在Utils类下面写个方法来读取代码publicstaticvoidgetXMindTemplate(HttpServletResponseresponse){StringfileName="templates/TestCaseTemplate.xmind";//文件名称ClassPa......
  • Java-LocalDateTime时间和时间(时间加减)
    前言一开始使用Date类来表述时间属性一个问题是时间戳的问题,另一个问题是读取Excel数据格式的时候没有那么灵活 1.基本知识LocalDateTime是Java8引入的日期和时间API中的一个类,位于java.time包中。它提供了一种更灵活、更方便的方式来处理日期和时间,相比旧的Date类更为......
  • java 多线程CountDownLatch
     CountDownLatch简介CountDownLatch 是Java中的一个同步工具类,可以用来确保一组线程等待其他线程完成各自工作后再继续执行。CountDownLatch的应用场景CountDownLatch可以被广泛应用于各种多线程协作的场景,例如:主线程等待多个子线程完成后再执行下一步操作。多个子任......