适配器模式(一种设计模式)

server/2024/11/29 18:56:19/

适配器模式, 也叫包装器模式. 将⼀个类的接⼝,转换成客⼾期望的另⼀个接⼝, 适配器让原本接⼝不兼容的类可以合作无间。

简单来说就是⽬标类不能直接使⽤, 通过⼀个新类进⾏包装⼀下, 适配调⽤⽅使⽤. 把两个不兼容的接⼝通过⼀定的⽅式使之兼容.

回忆一下slf4j模式

slf4j是一种门面模式也是我们的适配器模式,我们不需要调用底层的方法,直接调用slf4j就可以完成日志的打印

适配器的创建和使用

package com.syx.book.adapter;public interface Slf4jLog {void log(String message);
}

 在这里我们定义了一个log方法用来打印日志,我们希望直接使用这个接口。

package com.syx.book.adapter;public class Log4jPrint {public void log4jPrint(String message){System.out.println("我是Log,打印日志为"+message);}
}

在这里有一个新的Log4jPrint类,这个Log4jPrint和Slf4jLog并不兼容,要把他们两个进行适配,来调用接口中的打印 ,用户使用下面的适配器来进行Log4j和slf4j的适配。

package com.syx.book.adapter;public class Log4jAdapter implements Slf4jLog{private Log4jPrint log4jPrint;public Log4jAdapter(Log4jPrint log4jPrint) {this.log4jPrint = log4jPrint;}@Overridepublic void log(String message) {log4jPrint.log4jPrint("我是适配器打印日志为:"+message);}
}
⼀般来说,适配器模式可以看作⼀种"补偿模式",⽤来补救设计上的缺陷. 应⽤这种模式算是"⽆奈之举", 如果在设计初期,我们就能协调规避接⼝不兼容的问题, 就不需要使⽤适配器模式了。
package com.syx.book.adapter;public class Main {public static void main(String[] args) {Slf4jLog slf4jLog=new Log4jAdapter(new Log4jPrint());slf4jLog.log("我是客户端");}
}

最后调用main方法将将两个类糅合在一起

  


http://www.ppmy.cn/server/145964.html

相关文章

宠物领养网络:SpringBoot的实现之道

第1章 绪论 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。时代进步的标志,就是让人们过上更好的生活。在互联网诞生之前,地域位置往往是人们思想上不…

飞书会话消息左右排列

飞书会话消息左右排列 1. 飞书登录后,点击头像,弹出菜单有个按钮设置 2. 3.

Docker 安装 windows 系统

前提 检查系统是否支持虚拟化 sudo apt install cpu-checker sudo kvm-ok Docker-Windows介绍 项目地址 Github链接:GitHub - dockur/windows: Windows in a Docker container. 兼容性 ⚙️ 产品平台Docker EngineLinux✅Docker DesktopLinux❌Docker Desktopma…

深度学习之 RefineNet

网络结构:    RefineNet block的作用就是把不同resolution level的feature map进行融合。网络结构如下: 最左边一栏就是FCN的encoder部分(文中是用的ResNet),先把pretrained ResNet按feature map的分辨率分成四个ResNet blocks,…

onnx报错解决-bert

一、定义 UserWarning: Provided key output for dynamic axes is not a valid input/output name warnings.warn( 案例 实体识别bert 案例 转transformers 模型到onnx 接口解读 二、实现 https://huggingface.co/docs/transformers/main_classes/onnx#transformers.onnx…

可视化建模以及UML期末复习篇----相关软件安装

作为一个过来人&#xff0c;我的建议是别过来。 一、可视化建模 <1>定义: 官方&#xff1a;一种使用图形符号来表示系统结构和行为的建模技术。 我&#xff1a;其实说白了就是把工作流程用图形画出来。懂不&#xff1f; <2>作用: 提高理解和分析复杂系统的能力。促…

【Linux】 进程是什么

0. 什么是进程&#xff0c;为什么要有进程&#xff1f; 1.操作系统为了更好的管理我们的软硬件&#xff0c;抽象出了许多概念&#xff0c;其中比较有代表的就是进程了。通俗的来说操作系统为了更好的管理加载到内存的程序&#xff0c;故引入进程的概念。 2.在操作系统学科中用P…

微信小游戏/抖音小游戏SDK接入踩坑记录

文章目录 前言问题记录1、用是否存在 wx 这个 API 来判断是微小平台还是抖小平台不生效2、微小支付的参数如何获取?3、iOS 平台不支持虚拟支付怎么办?微小 iOS 端支付时序图:抖小 iOS 端支付:4、展示广告时多次回调 onClose5、在使用单例时 this 引起的 bug6、使用 fetch 或…