适配器模式(Adapter)

3.4 适配器模式(Adapter)

用途:将一个类的接口转换成客户希望的另一个类的接口。

例子:电脑网线USB转接器

角色:

电脑(客户端)、网线、转接器、目标接口NetToUsb

  • 目标接口或抽象类(目标抽象类或目标抽象接口):这里例子中就是目标接口USB
  • 适配者类(需要适配的类 Adaptee):它定义了一个已经存在的接口,这个接口需要被适配。在这个例子中网线类就是那个已经存在的接口,但是网线不可以直接插到电脑的USB上。
  • 适配器类(Adapter):包装网线,让网线支持USB接口,把网线插到USB上并处理请求。
    • 适配器类需要同时和两个类打交道,它要把网线和电脑的USB接口连接在一起。有两种方式,
      • 一种是继承要被适配的类(网线类)同时实现目标接口。
      • 另一种是使用组合模式,不去继承适配者类,而是使用聚合的方式,让网线类作为适配器类的一个成员变量,然后再去实现目标抽象接口。

分类:

  • 类适配器:继承模式,继承需要被适配的类,实现目标抽象接口。
  • 对象适配器:组合模式,把需要适配的类作为成员属性变量,同时实现目标抽象接口。

核心理解

适配器模式做的事情是这样的:

有两个不相干的类,但是它们想组合到一起使用,那么就通过一个适配器把二者适配在一起使用。

比如说:电脑有一个USB接口,而网线的接头不是USB的,可是电脑想上网,那么就需要一个接口转接的适配器来完成这个工作,这时候会出现三个类。

  1. 网线类:这个类提供了具体要实现的业务方法,也就是它可以完成上网这件事,比如说有一个方法是net()
  2. USB接口类:这个接口是用户想要的接口,用户希望通过USB接口完成上网这件事,比如说有一个方法是execute()
  3. 转接器类:这个类来完成二者的适配:首先实现USB接口,然后或者通过继承网线类或者通过组合网线类,选择二者的任意一个方式,重写USB接口里的方法execute(),在这个方法里去调用网线类的真实业务方法net()来完成上网这件事
  4. 客户端在调用时,只需要把实例化的网线类通过set注入交给适配器,然后通过调用适配器类的execute()方法就可以完成上网这件事情!

posted @   靠谱杨  阅读(808)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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代码运行成功但是数据库数据没有更新

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示