当前位置: 首页 > article >正文

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

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

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

回忆一下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;
    }

    @Override
    public 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.kler.cn/a/414901.html

相关文章:

  • linux内核读写硬盘文件 kernel_writekernel_read
  • Ubuntu20.04安装kalibr
  • 本地推流,服务器拉流全流程
  • 【Docker】常用命令汇总
  • Linux和Ubuntu的关系
  • python3 自动更新的缓存类
  • 【基础】jsonpath
  • 【iOS】知乎日报总结
  • RSTP与MSTP实验
  • 裸金属服务器和专属主机的区别是什么?
  • Android so库的编译
  • 快速排序hoare版本和挖坑法(代码注释版)
  • IPVS与Keepalived
  • 【模电】整流稳压电源
  • Springboot 读取 resource 目录下的Excel文件并下载
  • 【innodb阅读笔记】之 表空间文件、重做日志文件
  • 网络安全拟态防御技术
  • 【计算机网络安全】信息收集扫描
  • 【分享】PPT打开密码的设置与移除方法
  • Neo4j图形数据库-Cypher中常用指令
  • Spring Security6 OAuth2 实现流程
  • Oracle, PostgreSQL 字符串排序不一致及调整
  • docker 僵尸进程问题
  • 构建 LLM (大型语言模型)应用程序——从入门到精通(第七部分:开源 RAG)
  • 使用 Go 语言封装 MinIO 相关操作
  • 40分钟学 Go 语言高并发:Pipeline模式(二)