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)