适配器模式:兼容不兼容接口

将一个类的接口转换成客户端期望的另一个接口,解决接口不兼容问题。

代码示例:

java 复制代码
// 目标接口(客户端期望的格式)
interface ModernPrinter {
    void printDocument(String text);
}

// 被适配的旧类(不兼容)
class LegacyPrinter {
    void print(String message, int copies) {
        for (int i = 0; i < copies; i++) {
            System.out.println("旧类打印: " + message);
        }
    }
}

// 适配器类(转换接口)
class PrinterAdapter implements ModernPrinter {
    private final LegacyPrinter legacyPrinter = new LegacyPrinter();
    
    @Override
    public void printDocument(String text) {
        // 调用旧类方法并适配参数
        legacyPrinter.print(text, 1); // 默认打印1份
    }
}

// 客户端调用
public class Client {
    public static void main(String[] args) {
        ModernPrinter printer = new PrinterAdapter();
        printer.printDocument("你好适配器!"); 
    }
}

**使用场景:**整合第三方库/遗留代码、系统接口升级时兼容旧模块

**优点:**复用现有代码;灵活性高

**缺点:**过度使用会导致系统结构混乱

相关推荐
大学生资源网1 分钟前
基于springboot的万亩助农网站的设计与实现源代码(源码+文档)
java·spring boot·后端·mysql·毕业设计·源码
小严家3 分钟前
Java基础教程大全完整学习路径
java·开发语言·学习
毕设源码-朱学姐4 分钟前
【开题答辩全过程】以 基于Java的电影推荐系统为例,包含答辩的问题和答案
java·开发语言
sheji34169 分钟前
【开题答辩全过程】以 基于SSM的校园新冠疫苗接种信息管理系统为例,包含答辩的问题和答案
java·开发语言
菜鸟233号11 分钟前
力扣78 子集 java实现
java·数据结构·算法·leetcode
dddaidai12320 分钟前
深入JVM(四):垃圾收集器
java·开发语言·jvm
BBB努力学习程序设计26 分钟前
Java方法(函数)完全指南:初学者的第一个"工具箱"
java
AI科技星31 分钟前
圆柱螺旋运动方程的一步步求导与实验数据验证
开发语言·数据结构·经验分享·线性代数·算法·数学建模
laocooon52385788636 分钟前
python 收发信的功能。
开发语言·python
xixixi7777737 分钟前
STIX/TAXII:网络威胁情报的“普通话”与“顺丰快递”
开发语言·安全·php·威胁·攻击检测·stix·taxii