• 小谈设计模式(18)—适配器模式


    专栏介绍

    专栏地址

    link

    专栏介绍

    主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位。
    在这里插入图片描述

    适配器模式

    适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。
    在这里插入图片描述

    角色分析

    目标接口(Target)

    客户端期望的接口,适配器将原始接口转换成目标接口。

    源接口(Adaptee)

    需要被适配的类或接口。

    适配器(Adapter)

    实现目标接口,同时持有源接口的实例,将目标接口的方法调用转发给源接口的实例。

    核心思想

    通过适配器将目标接口的方法调用转发给源接口的实例。这样一来,客户端就可以通过目标接口来使用源接口的功能。

    在这里插入图片描述

    应用场景

    当需要使用一个已经存在的类,但其接口不符合需求时,可以使用适配器模式。例如,使用第三方库提供的接口,但需要将其转换成自己系统中的接口。
    当需要复用一些已经存在的类,但是接口与系统的其他部分不兼容时,可以使用适配器模式。例如,将不同数据库的操作接口统一成一个接口。
    在这里插入图片描述

    Java程序实现

    // 目标接口
    interface Target {
        void request();
    }
    
    // 源接口
    class Adaptee {
        void specificRequest() {
            System.out.println("Adaptee: specificRequest");
        }
    }
    
    // 适配器
    class Adapter implements Target {
        private Adaptee adaptee;
    
        Adapter(Adaptee adaptee) {
            this.adaptee = adaptee;
        }
    
        @Override
        public void request() {
            adaptee.specificRequest();
        }
    }
    
    // 客户端代码
    public class Client {
        public static void main(String[] args) {
            Adaptee adaptee = new Adaptee();
            Target target = new Adapter(adaptee);
            target.request();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    在这里插入图片描述

    输出结果

    Adaptee: specificRequest
    
    • 1

    这说明适配器模式成功地将不兼容的接口转换成了兼容的接口,使得客户端可以使用目标接口来调用源接口的功能。

    程序分析

    1

    在上面的示例中,我们有一个目标接口Target,其中定义了客户端所期望的方法request。我们还有一个源接口Adaptee,其中有一个不兼容的方法specificRequest。

    2

    为了使得客户端可以使用Target接口来调用specificRequest方法,我们创建了一个适配器Adapter,实现了Target接口,并持有一个Adaptee的实例。在适配器的request方法中,我们将Target接口的方法调用转发给Adaptee的specificRequest方法。

    3

    在客户端代码中,我们创建了一个Adaptee实例和一个适配器Adapter实例,并将Adaptee实例传递给适配器的构造函数。然后,我们使用Target接口来调用request方法,实际上是调用了Adaptee的specificRequest方法。
    在这里插入图片描述

    优缺点分析

    优点

    1

    适配器模式可以让不兼容的接口协同工作。

    2

    适配器模式可以复用已有的类,而无需修改其源代码。

    3

    适配器模式可以将不同接口的类组合在一起工作。

    缺点

    1

    适配器模式增加了系统的复杂性,因为需要增加一个适配器类。

    2

    适配器模式可能会降低系统的性能,因为需要进行额外的转换操作。
    在这里插入图片描述

    总结

    适配器模式可以将不兼容的接口转换成兼容的接口,使得原本无法一起工作的类可以协同工作。它是一种非常常用的设计模式,可以提高系统的灵活性和可扩展性。

  • 相关阅读:
    快手极速版app拉新推广和抖音极速版app地推拉新,哪个收益更高?
    Xcode项目文件与资源管理:精通技巧与实践指南
    uni-App 去掉顶部导航栏
    【数学】旋转后仍为函数图像问题
    ATF官方文档翻译(二):Authentication Framework & Chain of Trust(身份验证框架和信任链)(1)
    [ LeetCode ] 题刷刷(Python)-第58题:最后一个单词的长度
    vue2 生命周期钩子函数
    解决SpringBoot项目端口被占用的问题
    centos下Iptables的安装(离线)
    rxjs Observable 两大类操作符简介
  • 原文地址:https://blog.csdn.net/weixin_74888502/article/details/133580699