前言:大家好,我是小威,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种设计模式之其他模式,感谢大佬认真读完支持咯~
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论😁
希望能和诸佬们一起努力,今后我们顶峰相见🍻
再次感谢各位小伙伴儿们的支持🤞