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();
    }

}