Facade Design Pattern

Back To Index

Overview

The Facade Design Pattern provides a simplified interface to a larger body of code, such as a complex subsystem. It is a structural design pattern that aims to reduce the complexity of interactions between multiple classes or components.

Key Characteristics

Implementation

The following is an example of a Facade implementation in Java:


// Subsystem classes
class SubsystemA {
    public void operationA() {
        System.out.println("Subsystem A: Operation A");
    }
}

class SubsystemB {
    public void operationB() {
        System.out.println("Subsystem B: Operation B");
    }
}

class SubsystemC {
    public void operationC() {
        System.out.println("Subsystem C: Operation C");
    }
}

// Facade class
class Facade {
    private SubsystemA subsystemA;
    private SubsystemB subsystemB;
    private SubsystemC subsystemC;

    public Facade() {
        this.subsystemA = new SubsystemA();
        this.subsystemB = new SubsystemB();
        this.subsystemC = new SubsystemC();
    }

    public void operation1() {
        System.out.println("Facade: Operation 1");
        subsystemA.operationA();
        subsystemB.operationB();
    }

    public void operation2() {
        System.out.println("Facade: Operation 2");
        subsystemB.operationB();
        subsystemC.operationC();
    }
}

// Demo
public class FacadeDemo {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.operation1();
        facade.operation2();
    }
}
    

When to Use

Advantages

Disadvantages

Back To Index