当前位置: 首页 > news >正文

java设计模式之适配器模式

适配器模式是一种结构型设计模式,用于将不兼容的接口转换为客户端期望的接口,使原本因接口不匹配而无法协同工作的类能够一起工作。类似于电源适配器将220V电压转换为5V供手机充电。

结构

1.角色划分:

目标接口(Target):客户端期望调用的接口。
被适配者(Adaptee):已存在的、需要被适配的类(接口不兼容)。
适配器(Adapter):通过继承或组合方式,将Adaptee转换为Target接口。

2. 实现方式:

类适配器:通过继承Adaptee并实现Target接口(需支持多继承,Java中不适用)。
对象适配器:通过组合Adaptee对象并实现Target接口(推荐方式)。

实现方式

场景描述:

假设现有旧版文件读取器LegacyFileReader,其接口为readFile(String path),而客户端期望调用统一的文件处理器接口FileProcessor的process(String path)方法。通过适配器将二者对接。

1、对象适配器:

1. 定义目标接口(Target)2. 实现被适配者(Adaptee)3. 创建适配器(Adapter)

4. 客户端调用

2、类适配器(伪代码,Java不直接支持)

使用场景

1. 整合旧系统:将遗留代码或第三方库接口转换为新系统的接口。
2. 统一接口规范:多个类功能相似但接口不同,需统一调用方式。
3. 兼容不同版本:如系统升级时保留旧接口的适配层。
4. 框架扩展:适配不同数据源(如数据库驱动、文件格式)。

适配器模式 vs. 其他模式

实际应用案例

1、Java I/O流:
◦ InputStreamReader 和 OutputStreamWriter 是适配器,将字节流适配为字符流。

2、集合框架:
◦ Collections.list(Enumeration) 将旧版Enumeration适配为List。

3、Spring MVC:
◦ HandlerAdapter 将不同类型的Controller(如Servlet、POJO)适配为统一的处理接口。

优缺点

优点
解耦客户端与被适配者:客户端仅依赖目标接口。
复用现有类:无需修改原有代码即可整合功能。

缺点
增加代码复杂度:过多适配器会降低代码可读性。
可能掩盖设计缺陷:过度使用可能延迟系统重构。

总结

适配器模式是解决接口不兼容问题的利器,尤其在以下场景中效果显著:

• 系统需要集成外部组件或遗留代码。
• 需要统一多个类的接口调用方式。
• 希望在不修改原有代码的前提下扩展功能。

通过合理使用适配器模式,可以提升系统的灵活性和可维护性,降低模块间的耦合度。

相关文章:

  • 2011-2020年 全国省市县-数字普惠金融指数数字经济指数绿色金融指数县域数字乡村指数
  • Ollama本地部署deepseek-r1蒸馏版
  • eNSP中路由器的CON/AUX接口、GE Combo接口、Mini USB接口、USB接口、WAN侧uplink接口、FE接口、GE接口介绍
  • jmeter-AES加密
  • 【Python】PyQt5在PyCharm的配置与应用
  • E1-110.完美走位(滑动窗口)
  • C#带有设备仿真功能串口调试助手
  • 【AIGC】计算机视觉-YOLO系列家族
  • 今天你学C++了吗?——C++中的继承
  • 聚水潭数据集成到MySQL的高效方法
  • Git使用(一)--如何在 Windows 上安装 Git:详细步骤指南
  • JVM学习-类文件结构 类加载
  • 2025年渗透测试面试题总结-奇安信安全工程师(题目+回答)
  • 蓝桥杯备考:unordered_map用法之阅读理解
  • IIS EXPRESS 虚拟目录经验谈!
  • mysql 数据库部署
  • 故障诊断——neo4j入门
  • OpenManus 开源项目介绍
  • Flutter——Android与Flutter混合开发详细教程
  • Linux 入门:常用命令速查手册
  • 解放日报:上海深化改革开放,系统集成创新局
  • 神十九飞船已撤离空间站,计划于今日中午返回东风着陆场
  • 上海市十六届人大常委会第二十一次会议表决通过有关人事任免事项
  • 阿里千问3系列发布并开源:称成本大幅下降,性能超越DeepSeek-R1
  • 演员刘美含二手集市被曝售假,本人道歉
  • 西班牙葡萄牙遭遇史上最严重停电:交通瘫了,通信崩了,民众疯抢物资