Modelli di design - Modello di modello

In Template pattern, una classe astratta espone modi / modelli definiti per eseguire i propri metodi. Le sue sottoclassi possono sovrascrivere l'implementazione del metodo secondo necessità, ma l'invocazione deve essere nello stesso modo definito da una classe astratta. Questo modello rientra nella categoria del modello di comportamento.

Implementazione

Creeremo una classe astratta del gioco che definisce le operazioni con un metodo modello impostato come finale in modo che non possa essere sovrascritto. Cricket e Football sono classi concrete che estendono il gioco e ne ignorano i metodi.

TemplatePatternDemo , la nostra classe demo, utilizzerà Game per dimostrare l'uso del pattern pattern.

Passo 1

Crea una classe astratta con un metodo modello finale.

Game.java

public abstract class Game {
   abstract void initialize();
   abstract void startPlay();
   abstract void endPlay();

   //template method
   public final void play(){

      //initialize the game
      initialize();

      //start game
      startPlay();

      //end game
      endPlay();
   }
}

Passo 2

Crea classi concrete che estendono la classe precedente.

Cricket.java

public class Cricket extends Game {

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

   @Override
   void initialize() {
      System.out.println("Cricket Game Initialized! Start playing.");
   }

   @Override
   void startPlay() {
      System.out.println("Cricket Game Started. Enjoy the game!");
   }
}

Football.java

public class Football extends Game {

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

   @Override
   void initialize() {
      System.out.println("Football Game Initialized! Start playing.");
   }

   @Override
   void startPlay() {
      System.out.println("Football Game Started. Enjoy the game!");
   }
}

Passaggio 3

Utilizzare il gioco Template Method gioco s'() per dimostrare un modo definito di giocare gioco.

TemplatePatternDemo.java

public class TemplatePatternDemo {
   public static void main(String[] args) {

      Game game = new Cricket();
      game.play();
      System.out.println();
      game = new Football();
      game.play();		
   }
}

Passaggio 4

Verifica l'output.

Cricket Game Initialized! Start playing.
Cricket Game Started. Enjoy the game!
Cricket Game Finished!

Football Game Initialized! Start playing.
Football Game Started. Enjoy the game!
Football Game Finished!