欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 23种设计模式-适配器(Adapter)设计模式

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

2025/9/25 6:54:45 来源:https://blog.csdn.net/weixin_45683778/article/details/146469346  浏览:    关键词:23种设计模式-适配器(Adapter)设计模式

适配器设计模式

  • 🚩什么是适配器设计模式?
  • 🚩适配器设计模式的特点
  • 🚩适配器设计模式的结构
  • 🚩适配器设计模式的优缺点
  • 🚩适配器设计模式的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 实现 需要 定义目标接口创建适配器包装被适配者,以实现接口转换。

✅ 适用场景:

  • 需要 将现有类与不兼容的接口 进行协作时。

  • 需要 复用现有类,但其接口不符合需求时。

  • 需要 统一多个类的接口,以便客户端可以一致地使用它们。

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com