Spring 设计模式之适配器模式

Spring 设计模式之适配器模式

适配器模式

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许接口不兼容的类一起工作。

其核心思想是通过一个适配器类将不兼容的接口转换成客户端期望的另一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作

两者通过适配器一起工作,强调

1.通过实现目标接口和内部组合

2.实现的目标接口一定是旧对象

3.不是通过继承

用到的场景

1.新的对象,需要旧对象里面的方法

2.A有,B没有,B就通过适配器去获取A里面的元素(方法)

需要存在的核心类:

1.适配器类(实现旧对象)

java举例

java 复制代码
// 旧的打印机接口  
public interface OldPrinter {  
    void printOldWay(String content);  
}

// 旧的打印机实现  
public class OldPrinterImpl implements OldPrinter {  
    @Override  
    public void printOldWay(String content) {  
        System.out.println("使用旧的方式打印内容: " + content);  
    }  
}

// 新的打印机接口  
public interface NewPrinter {  
    void printNewWay(String content);  
}

// 适配器类,将旧的打印机适配为新的打印机  
public class PrinterAdapter implements NewPrinter {  
    private OldPrinter oldPrinter;  
  
    public PrinterAdapter(OldPrinter oldPrinter) {  
        this.oldPrinter = oldPrinter;  
    }  
  
    @Override  
    public void printNewWay(String content) {  
        // 适配过程:将新方式的内容适配为旧方式的内容进行打印  
        oldPrinter.printOldWay(content);  
    }  
}

// 新的文档类,它需要一个新打印机来打印  
public class NewDocument {  
    public void print(NewPrinter printer) {  
        printer.printNewWay("这是一个新文档的内容");  
    }  
}

// 调用使用示例
public class AdapterPatternDemo {  
    public static void main(String[] args) {  
        // 创建一个旧的打印机实例  
        OldPrinter oldPrinter = new OldPrinterImpl();  
  
        // 使用适配器将旧的打印机适配为新的打印机  
        NewPrinter newPrinter = new PrinterAdapter(oldPrinter);  
  
        // 创建一个新的文档并打印  
        NewDocument document = new NewDocument();  
        document.print(newPrinter);  
    }  
}

运行结果

java 复制代码
使用旧的方式打印内容: 这是一个新文档的内容
相关推荐
幂简集成explinks11 小时前
e签宝签署API更新实战:新增 signType 与 FDA 合规参数配置
后端·设计模式·开源
麦兜*14 小时前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
麦兜*14 小时前
MongoDB 在物联网(IoT)中的应用:海量时序数据处理方案
java·数据库·spring boot·物联网·mongodb·spring
大飞pkz15 小时前
【设计模式】C#反射实现抽象工厂模式
设计模式·c#·抽象工厂模式·c#反射·c#反射实现抽象工厂模式
努力也学不会java15 小时前
【设计模式】抽象工厂模式
java·设计模式·oracle·抽象工厂模式
青草地溪水旁15 小时前
设计模式(C++)详解—抽象工厂模式 (Abstract Factory)(2)
c++·设计模式·抽象工厂模式
青草地溪水旁15 小时前
设计模式(C++)详解—抽象工厂模式 (Abstract Factory)(1)
c++·设计模式·抽象工厂模式
青衫客3615 小时前
Spring异步编程- 浅谈 Reactor 核心操作符
java·spring·响应式编程
Cyan_RA919 小时前
SpringMVC @RequestMapping的使用演示和细节 详解
java·开发语言·后端·spring·mvc·ssm·springmvc
Magnetic_h1 天前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa