template-pattern
🧠 Concept
🧱 Key Roles
Role
Description
💻 Java Example – Report Generator
// Abstract class (template)
abstract class ReportGenerator {
// Template method (final – cannot be overridden)
public final void generateReport() {
fetchData();
processData();
formatReport();
exportReport();
}
// Abstract methods for subclasses to implement
abstract void fetchData();
abstract void processData();
abstract void formatReport();
// Common method shared by all
void exportReport() {
System.out.println("Exporting report to PDF...");
}
}
// Concrete implementation 1
class SalesReportGenerator extends ReportGenerator {
void fetchData() { System.out.println("Fetching sales data from database..."); }
void processData() { System.out.println("Calculating total sales and growth rates..."); }
void formatReport() { System.out.println("Formatting sales data into summary tables..."); }
}
// Concrete implementation 2
class EmployeeReportGenerator extends ReportGenerator {
void fetchData() { System.out.println("Retrieving employee records..."); }
void processData() { System.out.println("Analyzing performance scores..."); }
void formatReport() { System.out.println("Creating charts and ranking tables..."); }
}🧠 Flow Summary (Step-by-Step)
Step
Action
Base Template Method
Subclass Override
Example Output
🪜 Summary
📊 Real-world Analogy
Last updated