适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许接口不兼容的类一起工作。
其核心思想是通过一个适配器类将不兼容的接口转换成客户端期望的另一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作。
两者通过适配器一起工作,强调
1.通过实现目标接口和内部组合
2.实现的目标接口一定是旧对象
3.不是通过继承
用到的场景
1.新的对象,需要旧对象里面的方法
2.A有,B没有,B就通过适配器去获取A里面的元素(方法)
需要存在的核心类:
1.适配器类(实现旧对象)
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);
}
}
运行结果
使用旧的方式打印内容: 这是一个新文档的内容