Facade
Definition
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.
UML class diagram
Participants
- Facade
- knows which subsystem classes are responsible for a request.
- delegates client requests to appropriate subsystem objects.
- Subsystem classes
- implement subsystem functionality.
- handle work assigned by the Facade object.
- have no knowledge of the facade and keep no reference to it.
Sample code in Java
package com.hong.facade; class SubSystemA { public void methodA() { System.out.println("MethodA from SubSystemA"); } } class SubSystemB { public void methodB() { System.out.println("MethodB from SubSystemB"); } } class SubSystemC { public void methodC() { System.out.println("MethodC from SubSystemC"); } } class Facade { private SubSystemA subSystemA; private SubSystemB subSystemB; private SubSystemC subSystemC; public Facade() { subSystemA = new SubSystemA(); subSystemB = new SubSystemB(); subSystemC = new SubSystemC(); } public void methodA() { System.out.println("Facade methodA contains: "); subSystemA.methodA(); subSystemC.methodC(); } public void methodB() { System.out.println("Facade methodB contains: "); subSystemB.methodB(); subSystemC.methodC(); subSystemA.methodA(); } } public class Facade_structure { public static void main(String[] args) { Facade facade = new Facade(); facade.methodA(); System.out.println("------------------------"); facade.methodB(); } }