MST
星途 面试题库

面试题:Java适配器模式在旧系统功能扩展中的应用场景

请举例说明在基于Java适配器模式对旧系统进行功能扩展时,可能会遇到哪些实际场景?并简单描述如何使用适配器模式解决。
30.0万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

实际场景

  1. 接口不兼容:旧系统中存在一个数据获取接口 OldDataInterface,其方法 fetchOldData() 返回的数据格式是一种较老的自定义格式。新系统需要获取这些数据,但新系统使用的是标准的 JSON 格式。这里就出现了接口不兼容的情况,旧接口的数据格式无法直接被新系统使用。
  2. 方法签名差异:旧系统有一个文件处理类 OldFileProcessor,其中的 processFile() 方法接收的参数是本地文件路径字符串。而新系统使用的是基于 java.nio.file.Path 的文件处理方式,新的文件处理接口 NewFileProcessorInterface 中的 process(Path path) 方法期望的是 Path 对象。

解决方式

  1. 针对接口不兼容场景
    • 创建目标接口:定义新系统期望的数据获取接口 NewDataInterface,其中的方法 fetchNewData() 返回 JSON 格式数据。
    • 创建适配器类:实现 NewDataInterface 接口,在适配器类 DataAdapter 中组合 OldDataInterface 实例。在 fetchNewData() 方法中调用 OldDataInterfacefetchOldData() 方法,然后将返回的老格式数据转换为 JSON 格式并返回。
    • 使用适配器:在新系统中,通过 DataAdapter 实例调用 fetchNewData() 方法获取所需的 JSON 格式数据,从而解决接口不兼容问题。
  2. 针对方法签名差异场景
    • 定义目标接口:已有 NewFileProcessorInterface 接口及其 process(Path path) 方法。
    • 创建适配器类:实现 NewFileProcessorInterface 接口,在适配器类 FileAdapter 中组合 OldFileProcessor 实例。在 process(Path path) 方法中,将 Path 对象转换为字符串路径,然后调用 OldFileProcessorprocessFile() 方法。
    • 使用适配器:在新系统需要处理文件时,使用 FileAdapter 实例调用 process(Path path) 方法,实现对旧系统文件处理功能的复用,解决方法签名差异问题。