Facade Pattern
The Facade Pattern is used to consolidate numerous complicated objects and function calls in a single interface.
UML Example
Code Examples
Java
C++
C# .NET
VB .NET
Open Source Applications
Apache Excalibur
/** * A facade to the modularized *LoggerManager building system. * Add methods here to create LoggerManagers to your preference. * * @author <a href="mailto:dev@nospamavalon.apache.org">Avalon Development Team</a> * @version CVS $Revision: 1.3 $ $Date: 2004/03/10 13:54:50 $ * @since 4.0 */ public class Facade { /** * Assemble a new LoggerManager running on top of LogKit * configured from a configuration file logging to a supplied * logger as a fallback. * Use this method as a sample showing how to assemble your * own LoggerManager running on top of LogKit flavour. */ public static LoggerManager createLogKitConfigurable( final String prefix, final String switchTo ) { final org.apache.log.Hierarchy hierarchy = new Hierarchy(); final LoggerManager bare = new LogKitAdapter( hierarchy ); final LoggerManager decorated = applyDecorators( bare, prefix, switchTo ); final LoggerManagerTee tee = new LoggerManagerTee( decorated ); tee.addTee( new LogKitLoggerHelper( hierarchy ) ); tee.addTee( new LogKitConfHelper( hierarchy ) ); tee.makeReadOnly(); return tee; } /** * Assemble LoggerManager for Log4J system configured * via a configuration file. All the logging errors * will go to System.err however. */ public static LoggerManager createLog4JConfigurable( final String prefix, final String switchTo ) { final LoggerManager bare = new Log4JConfAdapter(); final LoggerManager decorated = applyDecorators( bare, prefix, switchTo ); return decorated; } private static LoggerManager applyDecorators( LoggerManager target, final String prefix, final String switchTo ) { if ( switchTo != null ) { target = new LogToSelfDecorator( target, switchTo ); } if ( prefix != null && prefix.length() > 0 ) { target = new PrefixDecorator( target, prefix ); } target = new CachingDecorator( target ); return target; } }