🏢Abstract Factory Pattern – Overview
🧠 Concept
🧱 Key Roles
Role
Description
💻 Java Example – Report Generator Suite
// Abstract Products
interface ReportHeader { void printHeader(); }
interface ReportBody { void printBody(); }
// Concrete Products (PDF)
class PDFReportHeader implements ReportHeader {
public void printHeader() { System.out.println("PDF Report Header"); }
}
class PDFReportBody implements ReportBody {
public void printBody() { System.out.println("PDF Report Body"); }
}
// Concrete Products (Excel)
class ExcelReportHeader implements ReportHeader {
public void printHeader() { System.out.println("Excel Report Header"); }
}
class ExcelReportBody implements ReportBody {
public void printBody() { System.out.println("Excel Report Body"); }
}
// Abstract Factory
interface ReportFactory {
ReportHeader createHeader();
ReportBody createBody();
}
// Concrete Factories
class PDFReportFactory implements ReportFactory {
public ReportHeader createHeader() { return new PDFReportHeader(); }
public ReportBody createBody() { return new PDFReportBody(); }
}
class ExcelReportFactory implements ReportFactory {
public ReportHeader createHeader() { return new ExcelReportHeader(); }
public ReportBody createBody() { return new ExcelReportBody(); }
}
// Client
class ReportApplication {
private ReportHeader header;
private ReportBody body;
public ReportApplication(ReportFactory factory) {
header = factory.createHeader();
body = factory.createBody();
}
public void printReport() {
header.printHeader();
body.printBody();
}
}🧠 Flow Summary (Step-by-Step)
Step
Action
Factory Used
Output
🪜 Summary
🧾 Real-world Analogy
🧭 TL;DR
Last updated