适配器模式
适配器模式其实很简单,或者说学了设计模式到现在,虽然每次看到各种名字的设计模式就觉得很高端,但当真正了解过后才知道其实也没有那么玄乎,有的东西在我们平时的时候都已经用到过了。比如这次我们要说的适配器模式,说白了,就是以前的代码接口,和我们客户端需要调用的接口不一致,但以前代码功能又是我们想要的功能。这个时候我们不必去修改以前代码的接口,我们只需要新增加一个类的,这个类符合客户端需要调用的接口,而在这个是适配类里调用我们以前代码的接口,这样就能做到不修改以前代码的接口,也不修改客户端就能实现接口匹配。
UML类结构同样很简单,代码就不难写出。
1 package day_26_adapter; 2 3 /** 4 * 客户端期待访问的目标接口,或者是类 5 * @author turbo 6 * 7 * 2016年9月26日 8 */ 9 public interface Target { 10 void request(); 11 }
1 package day_26_adapter; 2 3 /** 4 * 需要适配的类 5 * @author turbo 6 * 7 * 2016年9月26日 8 */ 9 public class Adaptee { 10 public void specificRequest(){ 11 System.out.println("这是最终要用到的方法,或者需要适配的方法"); 12 } 13 }
1 package day_26_adapter; 2 3 /** 4 * 适配器,适配需要被适配的接口或类,以此提供接口给客户端 5 * @author turbo 6 * 7 * 2016年9月26日 8 */ 9 public class Adapter implements Target { 10 private Adaptee adaptee = new Adaptee(); 11 12 /* (non-Javadoc) 13 * @see day_26_adapter.Target#request() 14 */ 15 @Override 16 public void request() { 17 adaptee.specificRequest(); 18 } 19 20 }
1 package day_26_adapter; 2 3 /** 4 * 客户端 5 * @author turbo 6 * 7 * 2016年9月26日 8 */ 9 public class Client { 10 public static void main(String[] args){ 11 Target target = new Adapter(); 12 target.request(); 13 } 14 }
适配器模式,并不是什么很高端看不懂的模式,也很简单。我们最后利用《大化设计模式》中的例子画出UML图(不再写出代码),一家篮球俱乐部里有一名外籍篮球运动员,但是教练和外籍运动员语言不同,当然不能换教练更不能换运动员,这个时候就有一个翻译在其中,翻译者充当的就是适配类角色,我们用这实际的例子来看看UML类结构是怎样的,以此来加深我们对适配器模式的理解。
不积跬步,无以至千里;不积小流,无以成江海。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?