裴大头-秦可爱

裴大头-秦可爱

Java 23种设计模式——适配器模式(Adapter)

发表于 2023-11-23
裴大头
阅读量 2024

适配器模式是一种常见的设计模式,它可以用来将一个类的接口转换成客户希望的另外一个接口,从而让原本由于接口不兼容而不能一起工作的类能够协同工作。在Java中,适配器模式通常涉及三个角色:目标接口、适配器和被适配者。

目标接口

目标接口是客户端所期望使用的接口,也可以是一个抽象类。它定义了客户端需要调用的方法,但是这些方法的参数类型或返回值类型可能与原有的接口不符。目标接口的存在是为了让客户端可以通过统一的接口来访问不同的子系统,而不需要关注具体的实现细节。 下面是一个示例代码,演示了如何定义一个目标接口:

public interface Target {
    void request();
}
java

被适配者

被适配者是需要被适配的类,它定义了客户端不关心的接口。被适配者通常是一个已经存在的类,它的接口与目标接口不兼容,需要通过适配器进行转换。被适配者的存在是为了提供一些功能,但是其接口与目标接口不匹配,无法直接使用。 以下是一个示例代码,演示了如何定义一个被适配者类:

public class Adaptee {
    public void specificRequest() {
        System.out.println("Adaptee's specific request");
    }
}
java

适配器

适配器是实现了目标接口的类,并且包装了一个需要适配的类的实例,以便将其接口转换成客户端所期望的接口。适配器通常包含一个被适配者对象的引用,在目标接口方法中调用被适配者对象的方法,并将其返回值转换成客户端期望的类型。 以下是一个示例代码,演示了如何定义一个适配器类:

public class Adapter implements Target {
    private Adaptee adaptee;

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

    public void request() {
        adaptee.specificRequest();
    }
}
java

在这个示例中,Adapter 类实现了 Target 接口,并且包装了 Adaptee 的实例。在 request 方法中调用了 AdapteespecificRequest 方法。

客户端代码

客户端代码需要创建一个适配器对象,并且通过适配器对象来调用被适配者的方法。客户端不需要知道适配器和被适配者之间的具体关系,只需要知道目标接口即可。 以下是一个示例代码,演示了如何在客户端代码中使用适配器模式:

public class Main {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target adapter = new Adapter(adaptee);
        adapter.request();
    }
}
java

在这个示例中,客户端首先创建一个 Adaptee 对象,然后创建一个适配器对象,并将 Adaptee 对象作为参数传递给适配器。最后,客户端通过适配器来调用目标接口的方法。

总结

适配器模式是一种非常有用的设计模式,它可以帮助我们解决接口不兼容的问题。通过使用适配器模式,我们可以将一个类的接口转换成客户端所期望的另外一个接口,从而让原本由于接口不兼容而不能一起工作的类能够协同工作。在Java中,实现适配器模式通常需要定义目标接口、被适配者和适配器三个角色。

Java 23种设计模式(含源码)

评论
来发一针见血的评论吧!
表情

快来发表评论吧~

推荐文章
  • JavaScript 的事件循环机制

    1点赞1评论

  • Element UI 级联选择器 el-cascader 实现懒加载和搜索功能

    1点赞0评论

  • Java 23种设计模式——适配器模式(Adapter)

    1点赞0评论

  • Vue项目代码规范

    1点赞1评论

  • Java 23种设计模式——单例模式(Singleton)

    0点赞1评论

Crafted with by Pei你看雪

小破站居然运行了 1048 天访客 26776

© 2023 Pei你看雪鲁ICP备19037910号-2