设计模式-适配器模式

适配器模式是一种结构型设计模式,它允许将一个现有的类与另一个不兼容的类进行协同工作。适配器模式通过创建一个中间适配器来连接两个不兼容的接口,使它们能够正常地协作。

适配器模式适用于需要将不兼容的类或接口进行适配的情况。例如,当我们需要将一个旧版 API 系统与新版的客户端进行集成时,可以使用适配器模式将两种不同的接口进行适配。适配器模式的主要优点是可以复用现有的代码,减少代码的修改和重构,从而提高代码的可维护性和可重用性。但是,适配器模式也会增加系统的复杂度,需要额外的适配器类来协调两个不兼容的接口,在设计时需要慎重考虑其使用场景和影响。

简单实现

大概的构思图构思图

这是影像数据输出接口(只输出数据啊 不负责显示!!!)

1
2
3
public interface IComputerOuputContent {
String toDisplayData();
}

适配器接口类(数据转换器接口类)

1
2
3
public interface IVideoAdapter {
String convertData();
}

输出数据接口实现类 电脑

一台电脑implements很多接口 比如各种输入接口(键盘输入接口 鼠标输入接口) 输出接口 (显示屏内容输出接口 音频输出接口)

当然我这里只实现了影像输出接口

1
2
3
4
5
6
7
8
public class Computer implements IComputerOuputContent {
@Override
public String toDisplayData() {
//给显示器的数据 显示器无法理解的
return "1101010101010101010";
}
}

适配器类 就是把电脑给的数据转化为图像的东东

computer(电脑)输出的1101010101010101010是 Displayer(显示器)不能直接显示的内容

adapter(适配器) 应运而生 这个adapter是可以做很多事情的 但是我只实现了IVideoAdapter(影像数据适配(转换)功能) 当然你还可以implements别的功能,Adapter(适配器)负责把computer(电脑)输出的数据解码成Displayer(显示器)能理解的编码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Adapter extends Computer implements IVideoAdapter{
/**
* 此处进行适配(数据转换)
*
* 改写适配器convertData接口 执行解码
*/
@Override
public String convertData() {
/**
* 获取Computer给的数据
*/
String displayData = this.toDisplayData();
//此处正在努力转换成显示器能接受的数据。。。。。。。假装在解码
displayData = displayData.replace("1101010101", "你")
.replace("010101010", "好");
return displayData;
}

}

显示器类

输出转换后Displayer(显示器)能理解的编码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Displayer {

private IVideoAdapter videoAdapter;

/**
* 给显示器加个影像数据适配(转换)器
* @param videoAdapter
*/
public void setVideoAdapter(IVideoAdapter videoAdapter) {
this.videoAdapter = videoAdapter;
}

/**
* 显示内容
*/
public void view() {
System.out.println(videoAdapter.convertData());
}
}

main方法测试一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {
public static void main(String[] args) {
/**
* 实例化显示器
*/
Displayer displayer = new Displayer();
displayer.setVideoAdapter(new Adapter());
/**
* 把数据转换器接入显示器
* 显示器显示内容
*/
displayer.view();
}
}

输出内容

image-20230410205458740

懒得敲代码的人可以到这里下载https://download.csdn.net/download/Mo_0214/12536851


设计模式-适配器模式
https://cason.work/2023/04/10/设计模式-适配器模式/
作者
Cason Mo
发布于
2023年4月10日
许可协议