适配器模式(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 方法中,调用了 OldDataReaderreadOldFormatData 方法,并进行了必要的数据转换。

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

相关推荐
周某某~3 天前
七.适配器模式
java·设计模式·适配器模式
摘星编程5 天前
适配器模式深度解析:Java设计模式实战指南与接口兼容性解决方案
适配器模式·架构设计·java设计模式·接口兼容性·对象适配器
蔡蓝5 天前
设计模式-适配器模式
java·设计模式·适配器模式
冰茶_14 天前
适配器模式:让不兼容接口协同工作
microsoft·设计模式·适配器模式
无问81714 天前
SpringBoot:统一功能处理、拦截器、适配器模式
spring boot·后端·适配器模式
暴躁哥21 天前
深入理解设计模式之适配器模式
设计模式·适配器模式
JAVA坚守者1 个月前
Java 性能调优全解析:从设计模式到 JVM 的 7 大核心方向实践
适配器模式·并发编程·jvm 调优·javacc·熔断机制·java 性能优化·jmh 测试
wjm0410061 个月前
C++八股--5--设计模式--适配器模式,代理模式,观察者模式
c++·设计模式·适配器模式
催眠大树1 个月前
适配器模式(Adapter Pattern)
java·开发语言·适配器模式