Description / Meta Description
Learn the Template Method Design Pattern in Java with practical examples. Understand how Template Method defines a standard workflow while allowing subclasses to customize individual steps. Discover real-world applications in Spring Framework, batch processing systems, enterprise workflows, and framework design.
Template Method Design Pattern in Java: Defining the Skeleton of an Algorithm While Allowing Customization
In the previous article, we explored the State Pattern, which helps objects change behavior dynamically as their internal state changes.
State answers:
How do I change behavior based on state?
Template Method answers a different question:
How do I enforce a standard workflow while allowing specific steps to vary?
This pattern is heavily used in:
- Spring Framework
- Batch Processing Systems
- ETL Pipelines
- Enterprise Workflows
- Framework Development
- Report Generation Systems
If you’ve ever seen a framework define the overall process while allowing you to customize certain steps, you’ve encountered Template Method.
The Problem: Similar Processes, Different Implementations
Imagine an enterprise application generating reports.
Every report follows the same process:
Load Data
↓
Process Data
↓
Format Report
↓
Export Report
However, the implementation differs.
Sales Report:
Load Sales Data
Format As Excel
Inventory Report:
Load Inventory Data
Format As PDF
Customer Report:
Load Customer Data
Format As CSV
A naive approach often leads to duplicated code.
Duplicate Logic Example
Sales Report:
loadSalesData();
processData();
formatExcel();
export();
Inventory Report:
loadInventoryData();
processData();
formatPdf();
export();
Customer Report:
loadCustomerData();
processData();
formatCsv();
export();
Notice:
Process Data
Export
are repeated everywhere.
This violates:
DRY Principle
(Don't Repeat Yourself)
What We Really Want
We want:
Common Workflow
Load Data
↓
Process Data
↓
Format
↓
Export
while allowing:
Load Data
Format
to vary per report type.
This is exactly what Template Method provides.
What is Template Method Pattern?
Template Method is a Behavioral Design Pattern that:
Defines the skeleton of an algorithm in a base class while allowing subclasses to override specific steps without changing the overall structure.
Think of it like a recipe.
Recipe:
Prepare Ingredients
Cook
Serve
The overall process remains fixed.
The ingredients vary.
Real Life Analogy
Consider boarding a flight.
Every passenger follows:
Check-In
↓
Security Check
↓
Board Flight
The process is fixed.
However:
Domestic Passenger
International Passenger
VIP Passenger
may have different implementations for certain steps.
The workflow remains unchanged.
Template Method Architecture
Abstract Class
Template Method
│
▼
Step 1
Step 2
Step 3
Step 4
▲
│
Concrete Implementations
The parent controls the flow.
Subclasses customize specific steps.
Step 1: Create Abstract Template
public abstract class ReportGenerator {
public final void generateReport() {
loadData();
processData();
formatReport();
exportReport();
}
protected abstract void loadData();
protected abstract void formatReport();
protected void processData() {
System.out.println(
"Processing Data");
}
protected void exportReport() {
System.out.println(
"Exporting Report");
}
}
Notice:
generateReport()
is marked:
final
Subclasses cannot alter the workflow.
Step 2: Create Sales Report
public class SalesReport
extends ReportGenerator {
@Override
protected void loadData() {
System.out.println(
"Loading Sales Data");
}
@Override
protected void formatReport() {
System.out.println(
"Formatting Excel Report");
}
}
Step 3: Create Inventory Report
public class InventoryReport
extends ReportGenerator {
@Override
protected void loadData() {
System.out.println(
"Loading Inventory Data");
}
@Override
protected void formatReport() {
System.out.println(
"Formatting PDF Report");
}
}
Client Usage
ReportGenerator report =
new SalesReport();
report.generateReport();
Output:
Loading Sales Data
Processing Data
Formatting Excel Report
Exporting Report
Notice:
Workflow remains identical.
Only specific steps differ.
Why Template Method Works
Without Template Method:
Sales Report Logic
Inventory Report Logic
Customer Report Logic
Repeated Workflow
With Template Method:
Shared Workflow
Customizable Steps
Less duplication.
Better consistency.
Workflow Visualization
Generate Report
│
▼
Load Data
│
▼
Process Data
│
▼
Format Report
│
▼
Export
Every report follows the same path.
Only implementation details vary.
Enterprise Example: Batch Processing
Every batch job performs:
Read Data
↓
Process Data
↓
Write Results
Different jobs implement:
Different Readers
Different Processors
Different Writers
This is Template Method.
Spring Framework Example
One of the best examples is:
JdbcTemplate
Spring defines:
Get Connection
Execute Query
Handle Exceptions
Close Resources
You only provide:
SQL Query
Row Mapper
Framework controls the workflow.
Servlet Example
Java Servlets follow Template Method.
Framework calls:
service()
which internally delegates to:
doGet()
doPost()
doPut()
doDelete()
Workflow remains fixed.
Implementation varies.
Data Import Example
Suppose an enterprise imports files.
Workflow:
Read File
↓
Validate
↓
Transform
↓
Save
Supported formats:
CSV
XML
JSON
Excel
Template Method avoids duplicating the workflow.
Hooks in Template Method
A hook is an optional step.
Example:
protected boolean requiresAudit() {
return false;
}
Subclasses may override.
Template:
if(requiresAudit()) {
audit();
}
This provides additional flexibility.
Spring Boot Example
Application startup:
Initialize Context
Load Beans
Apply Configurations
Start Application
Framework controls the lifecycle.
Developers customize selected steps.
Template Method principles appear throughout Spring.
Benefits of Template Method
1. Eliminates Code Duplication
Shared workflow lives in one place.
2. Enforces Standards
All implementations follow the same process.
3. Improves Maintainability
Workflow changes happen centrally.
4. Supports Extension
Subclasses customize behavior.
5. Encourages Reuse
Common logic is reused automatically.
Common Mistakes
Mistake 1: Too Many Hooks
Excessive customization points make the template difficult to understand.
Mistake 2: Overusing Inheritance
Sometimes Strategy Pattern may be more flexible.
Mistake 3: Large Abstract Classes
Avoid creating giant template classes with dozens of methods.
Keep templates focused.
Template Method vs Strategy
One of the most common interview questions.
Template Method
Uses:
Inheritance
Workflow is fixed.
Example:
Parent Controls Process
Strategy
Uses:
Composition
Behavior can change dynamically.
Example:
Choose Algorithm At Runtime
Visual Comparison
Template Method:
Abstract Class
│
▼
Subclass
Strategy:
Context
│
▼
Strategy Interface
Template Method vs State
State
Behavior changes based on current state.
NEW
PAID
SHIPPED
Template Method
Workflow remains fixed.
Only implementation varies.
Read
Process
Write
When Should You Use Template Method?
Use Template Method when:
✔ Workflow remains constant
✔ Individual steps vary
✔ Code duplication exists
✔ Framework-style design is needed
✔ Enterprise processes follow standard stages
Examples:
- Batch Processing
- Report Generation
- File Import Systems
- Framework Design
- ETL Pipelines
- Application Lifecycles
Avoid Template Method when:
❌ Workflow varies significantly
❌ Runtime algorithm switching is required
❌ Composition provides a cleaner design
Behavioral Patterns Covered So Far
| Pattern | Purpose |
|---|---|
| Strategy | Choose algorithms dynamically |
| Observer | Publish-subscribe communication |
| Command | Encapsulate actions |
| Chain of Responsibility | Process requests through handlers |
| State | Change behavior based on state |
| Template Method | Define workflow skeleton |
Behavioral Pattern Cheat Sheet
Strategy
→ Choose Behavior
Observer
→ Broadcast Events
Command
→ Encapsulate Actions
Chain of Responsibility
→ Process Through Pipeline
State
→ Change Behavior By State
Template Method
→ Define Workflow Skeleton
Final Thoughts
The Template Method Pattern solves a common enterprise challenge:
How do we standardize a process while still allowing customization?
By defining the workflow in a parent class and allowing subclasses to customize specific steps, we gain:
- Consistency
- Reusability
- Maintainability
- Extensibility
This is why Template Method appears throughout:
- Spring Framework
- Batch Processing Systems
- ETL Pipelines
- Report Generators
- Framework Design
- Enterprise Applications
Whenever you find yourself duplicating the same workflow with only a few changing steps, Template Method is often the ideal solution.
In the next article, we’ll explore:
Mediator Design Pattern — Centralizing Communication Between Objects to Reduce Coupling
You’ll learn how chat systems, workflow engines, air traffic control systems, UI frameworks, and enterprise orchestration platforms use Mediator Pattern concepts to coordinate complex interactions.