设计模式笔记:Adapter模式
AI速览:适配器模式通过“转接头”机制(如对象适配器或类适配器)将一个类的接口转换为另一个接口,解决新旧系统或组件间的兼容问题(如USB-A转USB-C),核心是复用旧代码(如
Banner类)而不修改其实现,客户端仅依赖目标接口(如
设计模式笔记:Adapter模式(适配器模式)
什么是适配器模式?
想象你有一个USB-C接口的电脑,但手头只有USB-A的U盘。这时你需要一个转接头,让旧设备能兼容新接口。适配器模式就是这个“转接头”——它将一个类的接口转换成另一个接口,使得原本不兼容的类可以协同工作。
为什么需要它?
- 解决接口不兼容:比如新旧系统对接时,无需修改已有代码。
- 复用遗留代码:将老旧功能包装成新接口供新系统使用。
- 灵活扩展:适配器可以同时兼容多个不同的类。
Java代码示例
假设有一个已存在的Banner类(需要被适配),但客户端期望通过Print接口调用打印功能,用适配器模式实现兼容:
1. 被适配的类:Banner(已存在,但接口不兼容)
1 | public class Banner { |
2. 目标接口:Print(客户端期望的接口)
1 | public interface Print { |
3. 适配器类:PrintBanner(连接Banner和Print)
1 | public class PrintBanner implements Print { |
4. 客户端使用
1 | public class Main { |
适配器模式的核心
- 目标接口(Print):定义客户端需要的规范。
- 被适配者(Banner):已存在的类,但接口不匹配。
- 适配器(PrintBanner):实现目标接口,并内部调用被适配者的方法。
实际应用
- Java I/O:
InputStreamReader将InputStream适配到Reader接口。 - Android开发:
RecyclerView.Adapter将数据适配到列表视图。 - 旧系统整合:将数据库JDBC接口适配到新的ORM框架。
优缺点
✅ 优点
- 复用旧代码:无需修改原有类即可接入新系统。
- 灵活解耦:客户端只依赖接口,不关心具体实现。
❌ 缺点
- 增加复杂性:过多适配器会让代码难以理解。
- 性能损耗:多层转发可能影响效率(通常可忽略)。
类适配器 vs 对象适配器
- 对象适配器(本例采用):通过组合实现,更灵活(可适配多个类)。
- 类适配器:通过继承实现(Java中需多继承,但Java不支持,因此不常用)。
一句话总结
适配器模式是“万能转接头”——让新旧世界握手言和!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Erokin's Shelter!
