面试题答案
一键面试实际场景
- 接口不兼容:旧系统中存在一个数据获取接口
OldDataInterface
,其方法fetchOldData()
返回的数据格式是一种较老的自定义格式。新系统需要获取这些数据,但新系统使用的是标准的 JSON 格式。这里就出现了接口不兼容的情况,旧接口的数据格式无法直接被新系统使用。 - 方法签名差异:旧系统有一个文件处理类
OldFileProcessor
,其中的processFile()
方法接收的参数是本地文件路径字符串。而新系统使用的是基于java.nio.file.Path
的文件处理方式,新的文件处理接口NewFileProcessorInterface
中的process(Path path)
方法期望的是Path
对象。
解决方式
- 针对接口不兼容场景
- 创建目标接口:定义新系统期望的数据获取接口
NewDataInterface
,其中的方法fetchNewData()
返回 JSON 格式数据。 - 创建适配器类:实现
NewDataInterface
接口,在适配器类DataAdapter
中组合OldDataInterface
实例。在fetchNewData()
方法中调用OldDataInterface
的fetchOldData()
方法,然后将返回的老格式数据转换为 JSON 格式并返回。 - 使用适配器:在新系统中,通过
DataAdapter
实例调用fetchNewData()
方法获取所需的 JSON 格式数据,从而解决接口不兼容问题。
- 创建目标接口:定义新系统期望的数据获取接口
- 针对方法签名差异场景
- 定义目标接口:已有
NewFileProcessorInterface
接口及其process(Path path)
方法。 - 创建适配器类:实现
NewFileProcessorInterface
接口,在适配器类FileAdapter
中组合OldFileProcessor
实例。在process(Path path)
方法中,将Path
对象转换为字符串路径,然后调用OldFileProcessor
的processFile()
方法。 - 使用适配器:在新系统需要处理文件时,使用
FileAdapter
实例调用process(Path path)
方法,实现对旧系统文件处理功能的复用,解决方法签名差异问题。
- 定义目标接口:已有