适配器设计模式
- 🚩什么是适配器设计模式?
- 🚩适配器设计模式的特点
- 🚩适配器设计模式的结构
- 🚩适配器设计模式的优缺点
- 🚩适配器设计模式的Java实现
- 🚩代码总结
- 🚩总结
🚩什么是适配器设计模式?
适配器模式(Adapter Pattern) 是 结构型设计模式,它允许 不兼容的接口 之间进行 协作。适配器模式通过 包装 一个类的接口,使其能够与另一个接口兼容。
使用场景
-
需要 将现有类与不兼容的接口 进行协作时。
-
需要 复用现有类,但其接口不符合需求时。
-
需要 统一多个类的接口,以便客户端可以一致地使用它们。
🚩适配器设计模式的特点
-
接口转换:适配器模式可以将一个类的接口转换成客户端期望的另一个接口。
-
透明性:客户端通过适配器与目标接口交互,无需知道适配器的存在。
-
复用性:适配器模式可以复用现有的类,而无需修改其代码。
-
灵活性:适配器模式可以灵活地处理不同接口之间的差异。
🚩适配器设计模式的结构
适配器模式主要包含以下部分:
-
Target(目标接口):客户端期望的接口,适配器需要实现该接口。
-
Adaptee(被适配者):需要被适配的类,其接口与目标接口不兼容。
-
Adapter(适配器):通过包装 Adaptee,将其接口转换为 Target 接口。
-
Client(客户端):通过 Target 接口与适配器交互。
图例:
🚩适配器设计模式的优缺点
✅ 优点
-
接口兼容:适配器模式可以使不兼容的接口之间进行协作。
-
复用性:可以复用现有的类,而无需修改其代码。
-
灵活性:适配器模式可以灵活地处理不同接口之间的差异。
❌ 缺点
-
增加复杂性:引入适配器会增加系统的复杂性,尤其是在有多个适配器时。
-
性能开销:适配器模式可能会引入额外的性能开销,尤其是在频繁调用时。
🚩适配器设计模式的Java实现
代码地址:GitHub
- 创建目标接口
USB
,定义客户端期望的方法Request()
。
/*** @author hanson.huang* @version V1.0* @ClassName USB* @Description 目标接口* @date 2025/3/24 10:09**/
public class USB {public void Request() {System.out.println("USB数据线");}
}
- 创建被适配者
TypeC
,定义其特有的方法SpecificRequest()
。
/*** @author hanson.huang* @version V1.0* @ClassName TypeC* @Description 被适配者 TypeC* @date 2025/3/24 10:10**/
public class TypeC {public void SpecificRequest() {System.out.println("Type-C数据线");}
}
- 创建适配器
Adapter
,继承USB
并包装TypeC
,将SpecificRequest()
转换为Request()
。
/*** @author hanson.huang* @version V1.0* @ClassName Adapter* @Description 适配器 Adapter* @date 2025/3/24 10:10**/
public class Adapter extends USB {private TypeC typeC = new TypeC();@Overridepublic void Request() {typeC.SpecificRequest();}
}
- 创建客户端,测试适配器模式
/*** @author hanson.huang* @version V1.0* @ClassName AdapterPattern* @Description 测试适配器模式* @date 2025/3/24 10:13**/
public class AdapterPattern {public static void main(String[] args) {USB usb = new Adapter();usb.Request();}
}
📌 运行结果
🚩代码总结
-
目标接口
USB
定义客户端期望的方法Request()
。 -
被适配者
TypeC
定义其特有的方法SpecificRequest()
。 -
适配器
Adapter
继承USB
并包装TypeC
,将SpecificRequest()
转换为Request()
。
🚩总结
-
适配器模式(Adapter Pattern) 允许
不兼容的接口
之间进行协作,通过 包装 一个类的接口,使其能够与另一个接口兼容。 -
适用于 将现有类与不兼容的接口 进行协作、复用现有类 或 统一多个类的接口 的场景。
-
Java 实现 需要 定义目标接口、创建适配器 并 包装被适配者,以实现接口转换。
✅ 适用场景:
-
需要 将现有类与不兼容的接口 进行协作时。
-
需要 复用现有类,但其接口不符合需求时。
-
需要 统一多个类的接口,以便客户端可以一致地使用它们。
创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️