适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换为客户期望的另一个接口。通过这种方式,原本由于接口不兼容而无法协同工作的类能够一起工作。

体现的设计原则

  1. 单一职责原则:通过分离接口转换的职责到适配器类中,保持了原有类的功能单一性。
  2. 开闭原则:可以在不修改现有代码的情况下引入新的适配器类来支持新类型的接口转换。
  3. 封装变化:将接口的差异封装在适配器中,使得系统其他部分不受影响。

示例场景

假设有一个老项目中的数据读取类 OldDataReader,它的接口方法是 readOldFormatData(),而新项目需要的数据读取接口是 readNewFormatData()。我们可以通过创建一个适配器类 DataAdapter 来解决这个问题。

Java 代码示例

java 复制代码
// 老项目中的数据读取类
class OldDataReader {
    public String readOldFormatData() {
        return "Old format data";
    }
}

// 新项目所需的数据读取接口
interface NewDataReader {
    String readNewFormatData();
}

// 适配器类,将 OldDataReader 的接口转换为 NewDataReader 接口
class DataAdapter implements NewDataReader {
    private OldDataReader oldDataReader;

    public DataAdapter(OldDataReader oldDataReader) {
        this.oldDataReader = oldDataReader;
    }

    @Override
    public String readNewFormatData() {
        // 调用老接口并进行数据转换
        String oldData = oldDataReader.readOldFormatData();
        return convertToNewFormat(oldData);
    }

    private String convertToNewFormat(String oldData) {
        // 数据转换逻辑
        return "Converted: " + oldData;
    }
}

// 客户端代码
public class AdapterPatternDemo {
    public static void main(String[] args) {
        OldDataReader oldDataReader = new OldDataReader();
        NewDataReader newDataReader = new DataAdapter(oldDataReader);

        // 使用新接口读取数据
        System.out.println(newDataReader.readNewFormatData());
    }
}

在这个例子中:

  • OldDataReader 是现有的、不能直接满足新需求的老类。
  • NewDataReader 是新项目要求的接口。
  • DataAdapter 是适配器类,实现了 NewDataReader 接口,并持有一个 OldDataReader 实例。在 readNewFormatData 方法中,调用了 OldDataReader 的 readOldFormatData 方法,并进行了必要的数据转换。

这样,新项目就可以通过 NewDataReader 接口使用旧的数据读取功能,而无需修改原有的 OldDataReader 类。

相关推荐
kiracrimson1 天前
栈与队列容器:适配器、deque 与 priority_queue
开发语言·c++·适配器模式
傲世仙尊2 天前
stack-queue与deque-适配器模式中控数组分段连续与仿函数
适配器模式
Eyfcom3 天前
〖物流系统架构演进实录 02〗物流网关设计:多平台接入适配与异构接口的统一收敛
适配器模式·物流管理系统·物流架构·网关设计·多平台对接
yuehuaxin0113 天前
LS8011C 快充协议芯片|SOT‑23‑6L 内置 431,PD3.2 SPR/PPS 适配器物料备选评估调试笔记
笔记·智能家居·适配器模式·智能硬件
yuehuaxin0114 天前
LP3717BSL 芯茂微|SOP8L 自供电 PSR,SEL 电阻调峰值电流,12W 充电器物料替代评估笔记
嵌入式硬件·适配器模式·智能硬件
缓慢更新14 天前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
博风16 天前
8、设计模式应用举例:适配器模式:Iterator接口与Enumeration接口
设计模式·适配器模式
范中勤19 天前
适配器模式(Adapter Pattern):原理、场景与 LLM 多厂商工程落地
设计模式·架构·langchain·适配器模式·多厂商
yuehuaxin0120 天前
上海贝岭 BL6523GX(D78) 单相计量芯片开发笔记:引脚定义、寄存器配置与校表流程
嵌入式硬件·智能家居·适配器模式·智能硬件
yuehuaxin0125 天前
LP20R100FN 同步整流|3C 认证适配器 CCM 工况倒灌、温升超标样机避坑解析
嵌入式硬件·智能家居·适配器模式·智能硬件