slf4j 是如何成为门面的?

How is slf4j a facade?

我正在尝试了解 slf4j 的详细信息。我仍然不清楚 slf4j 如何被视为日志外观?

立面的目的通常是 -

Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.

在 slf4j 的情况下,它提供了一个通用的 Logger 接口,但是像 log4j, logback 等每个绑定项目都需要提供它们的具体实现。

所以我了解 adapter pattern 是如何适应的,但我仍然无法理解 Facade Pattern 的使用方式。

它不是语言级别的外观,它是应用程序级别的外观。当您编写应用程序(或者更重要的是,一个库!)时,您必须以某种方式记录语句。如果您将代码绑定到特定的日志实现(log4j、logback),则很难将其集成到使用其他日志实现的另一段代码中,因为您必须配置两次并且可能无法共享相同的输出设备。

这对图书馆作者来说尤其重要。所以 slf4j 开始发挥作用:您登录到 slf4j,然后让库的用户通过适当的绑定和绑定配置提供实际的日志记录机制。

SLF4J 不是严格意义上的门面。它只为大多数日志记录框架共享的最常见的日志记录方法提供 API,允许用户在需要时相对轻松地切换到不同的 API。