Java读源码学设计模式:适配器Adapter

本文介绍了适配器模式在日志工具如log4j和slf4j中的应用。slf4j提供统一接口,实现不同日志工具的适配,使得框架如Hibernate能在不关心具体日志实现的情况下进行日志记录。适配器模式通过创建针对slf4j接口的Log4jLoggerAdapter,将log4j的功能适配到slf4j接口,实现了不同日志系统的兼容。
摘要由CSDN通过智能技术生成

适配器模式相关源码:slf4j-1.6.1、hibernate-3.6.7


大家都知道,log4j是一个广泛使用的日志工具,除此之外,sun公司在JDK中也有自己的日志工具,也就是java.util.logging.Logger。当然还有其他一些日志工具。

多种日志工具功能和使用方式类似,一般都包含debug、info、warn、error等日志级别的方法,但却没有实现共同的接口。这一点不像JDBC,虽然关系型数据库种类很多,例如MySQL、Oracle等,但是有一套统一的接口,也就是JDBC。

当然,如果你自己写一个项目,只要随便找一个日志工具用就行。但是,一些开源框架的作者就比较纠结了,他不知道你的系统用的是哪种日志工具,就不知道他在开源框架中使用哪一个日志工具。

slf4j提供了一个共同的接口,并实现了不同日志工具的适配器。所以开源框架中日志只需要调用slf4j提供的接口就行,不需要关心到底是用的哪个实现类。例如ORM框架Hibernate的日志就依赖slf4j。

和slf4j类似的还有commons-logging等。


源码(由于源码巨长,所以下面省略无关代码):

slf4j提供统一的接口org.slf4j.Logger,该接口提供给客户端(如Hibernate)去调用:

package org.slf4j;

public interface Logger {

  public boolean isTraceEnabled();

  public void trace(String msg);

  public void trace(String format, Object arg);

  public void trace(String format, Object arg1, Object arg2);

  public void trace(String format, Object[] argArray);

  public void trace(String msg, Throwable t);

  public boolean isDebugEnabled();

  public void debug(String msg);

  public void debug(String format, Object arg);

  public void debug(String format, Object arg1, Object arg2);

  public void debug(String format, Object[] argArray);

  public void debug(String msg, Throwable t);

  public boolean isInfoEnabled();

  public void info(Str
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值