面试题答案
一键面试实际场景举例
- 数据库访问:当需要从不同类型的数据库(如 MySQL、Oracle、SQL Server 等)获取数据时,每个数据库的连接方式、SQL 语法等都有差异。例如,MySQL 的 JDBC 连接字符串格式与 Oracle 不同。可以为每种数据库创建一个适配器类,将通用的数据访问接口适配到具体数据库的操作上。
- 第三方 API 集成:在调用不同第三方支付平台(如微信支付、支付宝支付、银联支付)的接口时,各平台的接口参数、调用方式、返回数据格式都不一样。可以通过适配器模式,创建不同的适配器类,将统一的支付请求接口适配到各个第三方支付平台的具体接口。
- 文件格式处理:读取不同格式的文件(如 XML、JSON、CSV)时,不同格式文件的解析方式不同。可以为每种文件格式创建一个适配器,将通用的文件读取接口适配到特定格式文件的解析操作。
适配器模式的优势
- 提高可维护性:当数据源发生变化(如数据库版本升级、第三方 API 变更、文件格式更新)时,只需修改对应的适配器类,而不会影响到其他使用该适配器的业务逻辑。例如,若微信支付接口发生变动,只需要修改微信支付适配器类,不影响整个支付系统的其他部分。
- 增强可扩展性:易于添加新的数据源。当需要接入新的数据库、第三方 API 或文件格式时,只需要创建新的适配器类,实现通用接口即可,无需对现有代码进行大规模修改。比如要接入新的第三方支付平台,只需创建对应适配器类,实现支付接口。
- 解耦业务逻辑与数据源:业务代码通过统一的接口与适配器交互,无需关心具体数据源的细节。这使得业务逻辑更加清晰,并且能够方便地替换数据源。例如,在数据访问层使用适配器模式,业务层代码可以以相同方式调用数据,而不关心是从 MySQL 还是 Oracle 获取数据。