Provide a unified interface to a set of interfaces in a subsystem. Façade defines a higher-level interface that makes the subsystem easier to use.
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.
Code
public class Main {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.methodA();
        facade.methodB();
    }
}
public class SubSystemOne {
    public void methodOne() {
        System.out.println(" SubSystemOne Method");
    }
}
public class SubSystemTwo {
    public void methodTwo() {
        System.out.println(" SubSystemTwo Method");
    }
}
public class SubSystemThree {
    public void methodThree() {
        System.out.println(" SubSystemThree Method");
    }
}
public class SubSystemFour {
    public void methodFour() {
        System.out.println(" SubSystemFour Method");
    }
}
public class Facade {
    private SubSystemOne one;
    private SubSystemTwo two;
    private SubSystemThree three;
    private SubSystemFour four;
    public Facade() {
        one = new SubSystemOne();
        two = new SubSystemTwo();
        three = new SubSystemThree();
        four = new SubSystemFour();
    }
    public void methodA() {
        System.out.println("\nmethodA() ---- ");
        one.methodOne();
        two.methodTwo();
        four.methodFour();
    }
    public void methodB() {
        System.out.println("\nmethodB() ---- ");
        two.methodTwo();
        three.methodThree();
    }
}
Output
methodA() ---- 
 SubSystemOne Method
 SubSystemTwo Method
 SubSystemFour Method
methodB() ---- 
 SubSystemTwo Method
 SubSystemThree Method
 


 
     
    
Top comments (0)