适配器模式(Adapter)
3.4 适配器模式(Adapter)
用途:将一个类的接口转换成客户希望的另一个类的接口。
例子:电脑网线USB转接器
角色:
电脑(客户端)、网线、转接器、目标接口NetToUsb
- 目标接口或抽象类(目标抽象类或目标抽象接口):这里例子中就是目标接口USB。
- 适配者类(需要适配的类 Adaptee):它定义了一个已经存在的接口,这个接口需要被适配。在这个例子中网线类就是那个已经存在的接口,但是网线不可以直接插到电脑的USB上。
- 适配器类(Adapter):包装网线,让网线支持USB接口,把网线插到USB上并处理请求。
- 适配器类需要同时和两个类打交道,它要把网线和电脑的USB接口连接在一起。有两种方式,
- 一种是继承要被适配的类(网线类)同时实现目标接口。
- 另一种是使用组合模式,不去继承适配者类,而是使用聚合的方式,让网线类作为适配器类的一个成员变量,然后再去实现目标抽象接口。
- 适配器类需要同时和两个类打交道,它要把网线和电脑的USB接口连接在一起。有两种方式,
分类:
- 类适配器:继承模式,继承需要被适配的类,实现目标抽象接口。
- 对象适配器:组合模式,把需要适配的类作为成员属性变量,同时实现目标抽象接口。
核心理解
适配器模式做的事情是这样的:
有两个不相干的类,但是它们想组合到一起使用,那么就通过一个适配器把二者适配在一起使用。
比如说:电脑有一个USB接口,而网线的接头不是USB的,可是电脑想上网,那么就需要一个接口转接的适配器来完成这个工作,这时候会出现三个类。
- 网线类:这个类提供了具体要实现的业务方法,也就是它可以完成上网这件事,比如说有一个方法是net()
- USB接口类:这个接口是用户想要的接口,用户希望通过USB接口完成上网这件事,比如说有一个方法是execute()
- 转接器类:这个类来完成二者的适配:首先实现USB接口,然后或者通过继承网线类或者通过组合网线类,选择二者的任意一个方式,重写USB接口里的方法execute(),在这个方法里去调用网线类的真实业务方法net()来完成上网这件事
- 客户端在调用时,只需要把实例化的网线类通过set注入交给适配器,然后通过调用适配器类的execute()方法就可以完成上网这件事情!
好看请赞,养成习惯:) 本文来自博客园,作者:靠谱杨, 转载请注明原文链接:https://www.cnblogs.com/rainbow-1/p/15626917.html
欢迎来我的51CTO博客主页踩一踩 我的51CTO博客
文章中的公众号名称可能有误,请统一搜索:靠谱杨的秘密基地
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-11-30 【已解决】JDBC --- update代码运行成功但是数据库数据没有更新