2930. Design Pattern - Template Method
Template Method Pattern


Behavioral Pattern: Template Method Pattern.

1. Template Method

The Template Method design pattern is to define an algorithm as skeleton of operations and leave the details to be implemented by the child classes. The overall structure and sequence of the algorithm is preserved by the parent class.

2. Example

2.1 Template

public abstract class Order {
    abstract void doShopping();
    abstract void doCheckout();
    abstract void doPayment();

    //template method
    public final void processOrder(){

        //add products to shopping cart
        doShopping();

        //place the order
        doCheckout();

        //pay money
        doPayment();
    }
}

public class InStoreOrder extends Order {
    @Override
    public void doShopping()
    {
        System.out.println("Customer selects products and puts to shopping cart.");
    }

    @Override
    public void doCheckout()
    {
        System.out.println("Customer places the order.");
    }

    @Override
    public void doPayment()
    {
        System.out.println("Customer pays the money with credit card or cash.");
    }
}

public class OnlineOrder extends Order {
    @Override
    public void doShopping()
    {
        System.out.println("Customer puts products to online shopping cart.");
    }

    @Override
    public void doCheckout()
    {
        System.out.println("Customer places the online order.");
    }

    @Override
    public void doPayment()
    {
        System.out.println("Customer pays the money through online payment methods.");
    }
}

2.2 Client

public class Client {
    public void run() {
        Order order = new InStoreOrder();
        order.processOrder();
        System.out.println();
        order = new OnlineOrder();
        order.processOrder();
    }
}

Output.

[In Store] Customer selects products and puts to shopping cart.
[In Store] Customer places the order.
[In Store] Customer pays the money with credit card or cash.

[Online] Customer puts products to online shopping cart.
[Online] Customer places the online order.
[Online] Customer pays the money through online payment methods.

3. Source Files

4. References