理解适配器模式之前,可以先来看一下转换插头,两者的思想其实是一样的
就是上图中的这个样子,当你出国旅行的时候,可能会用到这样一个东西,你的笔记本电脑直接插到国外的插座上是插不进去的,需要用一个转换插头,先让转换插头插到插座上,然后你的笔记本电脑插到转换插头上,这样就解决了问题
而这个转换插头,就是我们今天要说的适配器模式,在现实中的一个实现
适配器模式的定义:
适配器模式(Adapter):将一个类的接口,转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的类,可以一起工作
适配器模式的类图:
适配器模式的应用场景:
首先,咱们有一个现成的类,完成了一些特定的功能,现在要复用这个旧的类的功能,让它实现新的接口,我们定义一个新的类,让这个新的类实现新的接口,实现的方法就是调用旧的类
这样就实现了适配器
依照上边的类图,我们可以写出适配器模式的示例代码:
public interface Target {
void doSomething();
}
public class Adaptee {
public void service(){
System.out.println("我是原始的类");
}
}
public class Adapter implements Target {
public Adaptee adaptee;
@Override
public void doSomething() {
adaptee.service();
}
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
}
public class AdapterClient {
public static void main(String[] args) {
Target target = new Adapter(new Adaptee());
target.doSomething();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现