一、概念
外观模式又叫门面模式。目的是降低客户端与子系统的耦合度,提供一个统一的入口。
二、应用场景
1、spring JDBC 中的外观模式
2、Mybatis中的外观模式
3、Tomcat 中的外观模式
4、SLF4J 中的外观模式
三、SLF4J(Simple Logging Facade for Java)中的外观模式
1、项目中为什么更推荐使用SLF4J?
①SLF4J是一个用于日志系统的简单[Facade],抽象了各种日志框架例如 Logback、Log4j、Commons-logging 和 JDK 自带的 logging 实现接口。它使得用户可以在部署时使用自己想要的日志框架。
比如以下场景:
假设项目已经使用了log4j,而且你包含一个名为Apache Active MQ的库,这个库还依赖于另一个日志记录库logback的话,那么你还需要包含它们,然而,如果Apache Active MQ使用了SLF4J的话,你可以继续使用你的日志记录库,而不需要痛苦地添加和维护新的日志记录框架。
在你的开源库或者私有库中使用SLF4J,可以使它独立于任何的日志实现,这就意味着不需要管理多个库和多个日志文件。
②SLF4J提供了占位日志记录,通过移除对isDebugEnabled(), isInfoEnabled()等等的检查提高了代码的可读性。
下面是你用Log4j时的做法,当然这并不好玩而且它增加了不必要的公式化的代码,减少了代码的可读性。
if (logger.isDebugEnabled()) {
logger.debug("Processing trade with id: " + id + " symbol: " + symbol);
}
而如果你使用SLF4J,你可以使用更简洁的格式达到同样的效果,如下:
logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
在SLF4J中,我们不需要进行字符串拼接,不会导致使用临时字符串带来的消耗