Advanced Java September 27 ,2025

 

Template Method Design Pattern in Java

1. Introduction

The Template Method Pattern defines the skeleton of an algorithm in a method, deferring some steps to subclasses.
It allows subclasses to redefine certain steps of an algorithm without changing its structure.

2. Real-World Analogy

Think of a Game Development Framework:

  • The process of playing a game follows fixed steps: initialize game → start game → play game → end game.
  • Different games (Chess, Football, etc.) have different implementations for these steps, but the order remains the same.

3. Structure of Template Method Pattern

  • Abstract Class → Defines the template method and some abstract steps.
  • Concrete Classes → Implement the abstract steps with specific behaviors.

4. Custom Implementation Example

Let’s build a Game Framework example with Chess and Football.

Step 1 – Abstract Class

public abstract class Game {
    // Template method
    public final void play() {
        initialize();
        startPlay();
        playGame();
        endPlay();
    }

    protected abstract void initialize();
    protected abstract void startPlay();
    protected abstract void gameStatus();
    protected abstract void endPlay();
}

Step 2 – Concrete Classes

Chess Game

public class Chess extends Game {
    @Override
    protected void initialize() {
        System.out.println("Chess Game Initialized! Setting up board.");
    }

    @Override
    protected void startPlay() {
        System.out.println("Chess Game Started! White moves first.");
    }

    @Override
    protected void gameStatus() {
        System.out.println("Players are playing chess...");
    }

    @Override
    protected void endPlay() {
        System.out.println("Chess Game Finished!");
    }
}

Football Game

public class Football extends Game {
    @Override
    protected void initialize() {
        System.out.println("Football Game Initialized! Setting up teams.");
    }

    @Override
    protected void startPlay() {
        System.out.println("Football Game Started! Kick-off!");
    }

    @Override
    protected void gameStatus() {
        System.out.println("Players are playing football...");
    }

    @Override
    protected void endPlay() {
        System.out.println("Football Game Finished!");
    }
}

Step 3 – Client Code

public class TemplateMethodPatternDemo {
    public static void main(String[] args) {
        Game chess = new Chess();
        chess.play();

        System.out.println();

        Game football = new Football();
        football.play();
    }
}

5. Output

Chess Game Initialized! Setting up board.
Chess Game Started! White moves first.
Players are playing chess...
Chess Game Finished!

Football Game Initialized! Setting up teams.
Football Game Started! Kick-off!
Players are playing football...
Football Game Finished!

6. Advantages

  • Provides a clear structure for algorithms.
  • Allows subclasses to override only specific parts of the algorithm.
  • Promotes code reusability and consistency.

7. Real-World Use Cases

  • Game development frameworks.
  • Report generation systems (PDF, HTML, Excel).
  • Workflow automation (Document approval processes).
  • UI frameworks (Defining layout structures).

     

Next Blog- Visitor Design Pattern in Java

 

Sanjiv
0

You must logged in to post comments.

Related Blogs

Generics P...
Advanced Java August 08 ,2025

Generics Part- 2

Collection...
Advanced Java July 07 ,2025

Collections Framewor...

Mastering...
Advanced Java August 08 ,2025

Mastering Java Multi...

Annotation...
Advanced Java August 08 ,2025

Annotations

Java Memor...
Advanced Java August 08 ,2025

Java Memory Manageme...

Java Lambd...
Advanced Java August 08 ,2025

Java Lambda Expressi...

Java Funct...
Advanced Java August 08 ,2025

Java Functional Inte...

Java Strea...
Advanced Java August 08 ,2025

Java Stream API

JDBC (Java...
Advanced Java August 08 ,2025

JDBC (Java Database...

JDBC (Java...
Advanced Java September 09 ,2025

JDBC (Java Database...

Annotation...
Advanced Java August 08 ,2025

Annotations

Generics
Advanced Java August 08 ,2025

Generics

Java I/O (...
Advanced Java August 08 ,2025

Java I/O (NIO)

Introducti...
Advanced Java September 09 ,2025

Introduction to Desi...

Design Pat...
Advanced Java September 09 ,2025

Design Patterns in J...

Other Prin...
Advanced Java September 09 ,2025

Other Principles Beh...

Creational...
Advanced Java September 09 ,2025

Creational Design Pa...

In Creatio...
Advanced Java September 09 ,2025

In Creational Design...

In Creatio...
Advanced Java September 09 ,2025

In Creational Design...

Creational...
Advanced Java September 09 ,2025

Creational Design Pa...

Structural...
Advanced Java September 09 ,2025

Structural Design Pa...

In Creatio...
Advanced Java September 09 ,2025

In Creational Design...

Structural...
Advanced Java September 09 ,2025

Structural Design Pa...

Builder De...
Advanced Java September 09 ,2025

Builder Design Patte...

Structural...
Advanced Java September 09 ,2025

Structural Design Pa...

Structural...
Advanced Java September 09 ,2025

Structural Design Pa...

Structural...
Advanced Java September 09 ,2025

Structural Design Pa...

Structural...
Advanced Java September 09 ,2025

Structural Design Pa...

Structural...
Advanced Java September 09 ,2025

Structural Design Pa...

Structural...
Advanced Java September 09 ,2025

Structural Design Pa...

Design Pat...
Advanced Java September 09 ,2025

Design Patterns in J...

Chain of R...
Advanced Java September 09 ,2025

Chain of Responsibil...

Command De...
Advanced Java September 09 ,2025

Command Design Patte...

Interprete...
Advanced Java September 09 ,2025

Interpreter Design P...

Iterator D...
Advanced Java September 09 ,2025

Iterator Design Patt...

Mediator D...
Advanced Java September 09 ,2025

Mediator Design Patt...

Memento De...
Advanced Java September 09 ,2025

Memento Design Patte...

Observer D...
Advanced Java September 09 ,2025

Observer Design Patt...

State Desi...
Advanced Java September 09 ,2025

State Design Pattern...

Strategy D...
Advanced Java September 09 ,2025

Strategy Design Patt...

Visitor De...
Advanced Java September 09 ,2025

Visitor Design Patte...

Prototype...
Advanced Java September 09 ,2025

Prototype Design Pat...

Java 8+ Fe...
Advanced Java October 10 ,2025

Java 8+ Features

SOLID Prin...
Advanced Java October 10 ,2025

SOLID Principles in...

Custom Imp...
Advanced Java October 10 ,2025

Custom Implementatio...

Custom Imp...
Advanced Java October 10 ,2025

Custom Implementatio...

Custom Imp...
Advanced Java October 10 ,2025

Custom Implementatio...

Custom Imp...
Advanced Java October 10 ,2025

Custom Implementatio...

How Iterat...
Advanced Java October 10 ,2025

How Iterators Work i...

How Concur...
Advanced Java October 10 ,2025

How ConcurrentHashMa...

Comparable...
Advanced Java October 10 ,2025

Comparable vs Compar...

Get In Touch

G06, Kristal Olivine Bellandur near Bangalore Central Mall, Bangalore Karnataka, 560103

+91-8076082435

techiefreak87@gmail.com