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

类图+案例+代码详解:软件设计模式----适配器模式

7、适配器模式

是为了解决接口不一致的问题。

类适配器:适配器Adapter需要实现目标接口Target(声明所有需要的方法),并继承被适配类Adaptee。由于Adapter继承了Adaptee,所以Adapter只需要实现Target中Adaptee所拥有的以外的方法。

但是,在java中一个类不允许有两个直接超类,所以当有两个或两个以上的类Adaptee需要被适配时,就不能继续使用类适配器。

请添加图片描述

对象适配器(推荐):与类适配器基本相同,不同的是,Adapter实现Target中的所有方法(Operation1和Operation2),不再有继承于Adaptee的方法。但是,对于Target的Operation1的实现,是通过在Operation1方法里调用Adaptee声明的方法Operation1,以此来实现适配功能。当有多个Adaptee时,也就不会有多继承发生。

Adapter与Adaptee是聚合关系。

请添加图片描述

代码示例:充电接口的适配

场景:手机需要通过 USB 接口充电,但现有电源是圆孔接口。

1. 定义目标接口(USB 接口)

// 目标接口:手机需要的USB充电接口
interface USBCharger {void chargeWithUSB(); // 用USB接口充电
}

2. 定义适配者(圆孔电源接口)

// 适配者:现有的圆孔电源接口
class RoundHolePower {public void supplyWithRoundHole() {System.out.println("通过圆孔接口供电");}
}

3. 实现适配器(转换插头)

// 适配器:将圆孔接口转换为USB接口
class PowerAdapter implements USBCharger {private RoundHolePower power; // 持有适配者的引用public PowerAdapter(RoundHolePower power) {this.power = power;}@Overridepublic void chargeWithUSB() {System.out.println("适配器开始工作:");power.supplyWithRoundHole(); // 调用适配者的方法System.out.println("转换为USB接口,手机开始充电");}
}

4. 使用适配器

public class AdapterDemo {public static void main(String[] args) {// 1. 创建适配者(圆孔电源)RoundHolePower power = new RoundHolePower();// 2. 创建适配器,传入适配者USBCharger adapter = new PowerAdapter(power);// 3. 通过目标接口使用适配器adapter.chargeWithUSB();}
}
http://www.lryc.cn/news/580309.html

相关文章:

  • 【电赛培训】运算放大器、滤波器
  • 使用 C++/OpenCV 和 MFCC 构建双重认证智能门禁系统
  • 堆的简单介绍
  • 智链万物:人工智能驱动的产业智能化革命
  • 使用 C++/Faiss 加速海量 MFCC 特征的相似性搜索
  • Python(28)Python循环语句指南:从语法糖到CPython字节码的底层探秘
  • 解决el-select数据类型相同但是显示数字的问题
  • 【Project】基于kafka的高可用分布式日志监控与告警系统
  • C#扩展方法全解析:给现有类型插上翅膀的魔法
  • CMake基础:条件判断详解
  • 探索 Ubuntu 上 MongoDB 的安装过程
  • [Cyclone] 哈希算法 | SIMD优化哈希计算 | 大数运算 (Int类)
  • 【大模型】到底什么是Function Calling和MCP,以及和ReAct推理的关系是什么?
  • 若 VSCode 添加到文件夹内右键菜单中显示
  • 03_性能优化:让软件呼吸更顺畅
  • ABB焊接机器人智能节气仪
  • App爬虫工具篇-appium配置
  • AWS WebRTC:通过shell分析viewer端日志文件
  • 查看linux中steam游戏的兼容性
  • 权电阻网络DAC实现电压输出型数模转换Multisim电路仿真——硬件工程师笔记
  • C++构造和折构函数详解,超详细!
  • Linux基本命令篇 —— uname命令
  • 第二章-AIGC入门-开启AIGC音频探索之旅:从入门到实践(6/36)
  • 利用 AI 打造的开发者工具集合
  • 一个简单的分布式追踪系统
  • 指针篇(7)- 指针运算笔试题(阿里巴巴)
  • 物联网软件层面的核心技术体系
  • 论文解读:《DeepGray:基于灰度图像和深度学习的恶意软件分类方法》
  • 优象光流模块,基于python的数据读取demo
  • 新能源汽车功率级测试自动化方案:从理论到实践的革命性突破