2016-04-03 4 views
3

Ich versuche, die Details von slf4j zu verstehen. Mir ist noch nicht klar, wie slf4j als Logging-Fassade betrachtet wird?Wie ist slf4j eine Fassade?

Die Absicht der Fassade ist in der Regel -

eine einheitliche Schnittstelle mit einem Satz von Schnittstellen in einem Subsystem sorgen. Facade definiert eine Schnittstelle auf höherer Ebene, die die Verwendung des Subsystems erleichtert.

Bei slf4j es eine generische Logger-Schnittstelle bietet, aber jede Bindung Projekt wie log4j, logback usw. benötigen, um ihre konkrete Umsetzung zu sorgen.

Also ich verstehe, wie die adapter pattern passt, aber ich bin immer noch nicht in der Lage zu verstehen, wie Facade Pattern verwendet wird.

Antwort

2

Es ist nicht eine Fassade an der Ebene Sprache, es ist eine Fassade an der Anwendung Ebene. Wenn Sie Ihre Anwendung schreiben (oder, noch wichtiger, eine Bibliothek!), Müssen Sie die Anweisungen irgendwie protokollieren. Wenn Sie Ihren Code an eine bestimmte Protokollimplementierung (log4j, logback) binden, ist es schwierig, ihn in einen anderen Codeabschnitt zu integrieren, der eine andere Protokollimplementierung verwendet, da Sie dann Dinge zweimal konfigurieren müssen und möglicherweise nicht teilen können dasselbe Ausgabegerät.

Dies ist besonders wichtig für Bibliotheksautoren. Also kommt slf4j ins Spiel: Sie loggen sich nach slf4j ein und lassen dann den Benutzer der Bibliothek den eigentlichen Logging-Rechner über die entsprechende Bindung und die verbindliche Konfiguration bereitstellen.

1

SLF4J ist nicht eine Fassade im engeren Sinne. Es stellt nur eine API für die gebräuchlichsten Protokollierungsmethoden zur Verfügung, die von den meisten Logging-Frameworks gemeinsam genutzt werden, so dass der Benutzer bei Bedarf relativ einfach zu einer anderen API wechseln kann.