Nel pattern Template Method, una classe astratta espone modi e template per eseguire i suoi metodi. Le sue sottoclassi possono sovrascrivere l’implementazione del metodo secondo le necessità, ma l’invocazione deve avvenire nello stesso modo definito dalla classe astratta.

Template Method

Il template pattern rientra nella categoria dei Comportamentali.

DIAGRAMMA UML TEMPLATE METHOD

uml

IMPLEMENTAZIONE TEMPLATE METHOD

Step 1: Creiamo la classe astratta con il Template Method

public abstract class Gioco {
    abstract void init();
    abstract void start();
    abstract void end();

    //template method
    public final void gioca(){

        //Inizializza il gioco
        init();

        //Lancia il gioco
        start();

        //Termina il gioco
        end();
    }
}

Step 2: Creiamo le classi concrete che la estendono

Calcio.java

public class Calcio extends Gioco {
    @Override
    void end() {
        System.out.println("[CALCIO]::end()");
    }

    @Override
    void init() {
        System.out.println("[CALCIO]::init()");
    }

    @Override
    void start() {
        System.out.println("[CALCIO]::start()");
    }
}

Rugby.java

public class Rugby extends Gioco {
    @Override
    void end() {
        System.out.println("[RUGBY]::end()");
    }

    @Override
    void init() {
        System.out.println("[RUGBY]::init()");
    }

    @Override
    void start() {
        System.out.println("[RUGBY]::start()");
    }
}

Step 3: Creiamo il main

public class Main {
    public static void main(String[] args) {
        Gioco gioco = new Calcio();
        gioco.gioca();
        gioco = new Rugby();
        gioco.gioca();
    }
}

Step 4: Output

[CALCIO]::init()
[CALCIO]::start()
[CALCIO]::end()
[RUGBY]::init()
[RUGBY]::start()
[RUGBY]::end()

LINK UTILI