设计模式之适配器模式

1.目标接口

复制代码
//客户端期望的接口(例如:5V充电接口)
public interface Voltage5V {
    int output5V(); // 输出5V电压的方法
}

2.被适配者

复制代码
//现有的220V电源(需要被转换成5V)
public class Voltage220V {
    public int output220V() {
        System.out.println("输出220V电压");
        return 220; // 返回实际电压值
    }
}

3.适配器

复制代码
//实现目标接口,并持有被适配者的引用
public class VoltageAdapter implements Voltage5V {
    private Voltage220V voltage220V; // 组合被适配者

    // 构造器传入被适配对象
    public VoltageAdapter(Voltage220V voltage220V) {
        this.voltage220V = voltage220V;
    }

    @Override
    public int output5V() {
        // 调用被适配者的方法,并转换电压
        int srcVoltage = voltage220V.output220V();
        int dstVoltage = srcVoltage / 44; // 模拟电压转换(220V -> 5V)
        System.out.println("适配器转换电压:" + dstVoltage + "V");
        return dstVoltage;
    }
}

4.客户端

复制代码
// 手机充电(需要5V电压)
public class Phone {

    // 充电方法(依赖5V接口)
    public void charging(Voltage5V voltage5V) {
        int voltage = voltage5V.output5V();
        if (voltage == 5) {
            System.out.println("电压5V,充电成功!");
        } else {
            System.out.println("电压不符,充电失败!");
        }
    }

}

5.测试类

复制代码
public class AdapterDemo {
    public static void main(String[] args) {
        // 1. 创建一个220V电源
        Voltage220V voltage220V = new Voltage220V();

        // 2. 创建适配器,将220V转换为5V
        Voltage5V voltageAdapter = new VoltageAdapter(voltage220V);

        // 3. 手机使用适配器充电
        Phone phone = new Phone();
        phone.charging(voltageAdapter); // 输出:电压5V,充电成功!
    }
}

具体执行流程

  1. 客户端(Phone)​ 调用 charging() 方法,传入适配器对象。
  2. 适配器(VoltageAdapter)​ 内部调用被适配者 Voltage220Voutput220V()
  3. 适配器 将 220V 转换为 5V,返回给客户端。
  4. 客户端 根据返回值判断是否充电成功。

总结代码特点

  1. 不修改原有代码Voltage220V 原有逻辑不变。
  2. 通过适配器桥接:适配器实现目标接口,内部调用被适配对象。
  3. 客户端统一调用:客户端只依赖目标接口,无需知道底层细节。
相关推荐
做前端的娜娜子1 天前
从 0 到 1 打造一个配置可视化后台:一次前端配置中心化改造的实战复盘
前端·设计模式·数据可视化
执明wa2 天前
Android 开发中的设计模式入门:六大设计原则
android·设计模式
莫得感情 o2 天前
设计模式 09 · 适配器模式
设计模式·适配器模式
梅头脑2 天前
学了6种设计模式却写出了同事看不懂的代码——SOLID五原则反例对照,治好了我的"过度设计"
设计模式
workflower2 天前
案例:大模型驱动的“发现- 研判- 整改- 验证”全闭环治理体系
人工智能·深度学习·机器学习·设计模式·机器人
董员外3 天前
RAG 系统进化论(九):RAG 评测,怎样证明系统真的变好了?
人工智能·设计模式·程序员
西安小哥3 天前
AI时代技术工程师的"道法术器势":学习图谱、成长规划与角色重塑
人工智能·设计模式·程序员
莫得感情 o3 天前
设计模式 08 · 装饰器模式
设计模式·装饰器模式
董员外3 天前
RAG 系统进化论(八):Agentic RAG(智能体式 RAG),从回答问题到完成任务
人工智能·后端·设计模式
董员外3 天前
RAG 系统进化论(七):Multimodal RAG(多模态 RAG),当知识存在于表格、图片和页面中
人工智能·后端·设计模式