🏛️Facade Pattern – Overview
🧠 Concept
🧱 Key Roles
Role
Description
💻 Java Example – Report Generation System
// ----- Subsystems -----
class DataFetcher {
void fetchData() {
System.out.println("Fetching data from database...");
}
}
class DataFormatter {
void formatData() {
System.out.println("Formatting data into report structure...");
}
}
class ReportPrinter {
void printReport() {
System.out.println("Printing final report...");
}
}
// ----- Facade -----
class ReportGeneratorFacade {
private DataFetcher fetcher = new DataFetcher();
private DataFormatter formatter = new DataFormatter();
private ReportPrinter printer = new ReportPrinter();
public void generateReport() {
fetcher.fetchData();
formatter.formatData();
printer.printReport();
}
}
// ----- Client -----
public class Main {
public static void main(String[] args) {
ReportGeneratorFacade reportGenerator = new ReportGeneratorFacade();
reportGenerator.generateReport(); // Only one simple call!
}
}🧠 Flow Summary
Step
Action
Behind the Scenes
🪜 Summary
🧾 Real-world Analogy
🧭 TL;DR
Last updated