前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将23种设计模式中的适配器模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
小威在此先感谢各位大佬啦~~🤞🤞
在这里插入图片描述

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:24届毕业生,在一家满意的公司实习👏👏

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

以下正文开始

在这里插入图片描述

适配器模式概念

适配器模式(Adapter Pattern)属于结构型设计模式,它的作用是将一个类的接口转换成客户希望的另外一个接口。适配器让原本由于接口不兼容而不能一起工作的类可以协同工作。

适配器模式包括三个角色:目标抽象类(Target)、适配器类(Adapter)和被适配者类(Adaptee)。

目标抽象类(Target):定义了客户端使用的与特定领域相关的接口,也就是客户端需要的方法。

适配器类(Adapter):通过继承或者组合方式,将被适配者类的接口与目标抽象类的接口转换起来,使得客户端可以按照目标抽象类的接口进行操作。

被适配者类(Adaptee):已经存在的、功能稳定的类,在这里指的是需要适配的类。

适配器模式主要分为类适配器模式和对象适配器模式两种实现方式:

类适配器模式:通过继承来实现适配器功能;

对象适配器模式:通过组合来实现适配器功能。

适配器模式在实际开发中非常常见,比如我们经常需要连接各种不同的数据库,每种数据库都有自己独特的接口和方法。如果我们希望写出一段通用的代码,能够连接到任何一种数据库并执行相同的操作,那么适配器模式就非常适合解决这个问题。

适配器模式案例

我们使用Java代码来详细介绍适配器模式,比如,我们实现将220V电压转换成5V电压的功能:

// 目标接口
interface Voltage5V {
    int output5V();
}

// 源接口
class Voltage220V {
    public int output220V() {
        return 220;
    }
}

// 适配器类
class VoltageAdapter extends Voltage220V implements Voltage5V {
    public int output5V() {
        int src = output220V();
        System.out.println("原始电压:" + src + "V");
        int dst = src / 44; // 将220V电压转换成5V电压
        System.out.println("转换后电压:" + dst + "V");
        return dst;
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        Voltage5V adapter = new VoltageAdapter();
        int output5V = adapter.output5V();
        System.out.println("输出电压:" + output5V + "V");
    }
}

在上面的示例代码中,我们首先定义了目标接口Voltage5V和源接口Voltage220V,其中Voltage220V代表原始的220V电压。

然后我们通过类适配器模式来将Voltage220V适配成客户端所期望的Voltage5V接口。适配器类VoltageAdapter继承了Voltage220V并实现了Voltage5V,从而使得客户端可以通过Voltage5V接口来访问Voltage220V的方法。

在客户端代码中,我们创建了一个适配器对象adapter,并调用其output5V()方法来输出5V电压。运行结果如下:

原始电压:220V
转换后电压:5V
输出电压:5V

小结

通过使用适配器模式,我们成功将不兼容的源接口和目标接口进行了协调,使得客户端可以通过目标接口来访问源接口的方法,从而实现了更高的代码灵活性和可重用性

好了,本篇文章就先分享到这里了,后续将会继续介绍23种设计模式之其他模式,感谢大佬认真读完支持咯~
在这里插入图片描述

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论😁
希望能和诸佬们一起努力,今后我们顶峰相见🍻
再次感谢各位小伙伴儿们的支持🤞

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐