Latest web development tutorials

Modalità template

In modalità template (modello modello), e una classe astratta che definisce come eseguirlo descrive un procedimento / template. Le sue sottoclassi devono eseguire l'override del metodo può raggiungere, ma è chiamata verrà definito classe astratta. Questo tipo di modelli di progettazione appartengono modelli comportamentali.

introduzione

Intento: Definire un algoritmo di funzionamento scheletro, rimandando alcuni passi per sottoclassi.Metodo Template consente sottoclassi di un algoritmo senza modificare la struttura di un particolare passo dell'algoritmo possono essere ridefiniti.

Soluzione principale: Qualche metodo comune, ma in ogni sotto-classe di ri-scrivere questo approccio.

Quando utilizzare: Ci sonoalcuni metodi comuni.

Come risolvere: questi algoritmo generale astratto.

Il codice chiave: astratto classe implementa le altre fasi per l'attuazione sottoclasse.

Esempi di applicazione: 1, quando in una casa costruita, fondazioni, cavi, tubi di acqua sono gli stessi, solo nella seconda parte dell'edificio hanno un armadio plus plus recinzioni differenze.2, Viaggio in Occidente il buon Buddha all'interno 81 difficile, questo è un quadro logico di livello superiore. 3, Spirng a sostegno Hibernate, alcuni hanno già dato un buon modo per incapsulare, come transazioni aperte, ottenendo Session, Close Session e altri programmatori che non hanno ripetuto scrittura buona norme del codice, tiro diretto un'entità può essere salvato.

Vantaggi: 1, una parte dello stesso pacchetto, esteso parte variabile.2, estrarre codice comune, facile da mantenere. 3, il comportamento è controllato dalla classe genitore, sottoclasse implementazione.

Svantaggi: ciascuna delle diverse implementazioni richiedono una sottoclasse di realizzare, con un conseguente aumento del numero di classi, rendendo il sistema più sostanziale.

scenari di utilizzo: 1, più sottoclasse metodo comune, e la stessa logica.2, importanti, metodi complessi può essere considerato come un metodo template.

Nota: per evitare azioni dannose, insieme con i metodi del modello generale sono le parole chiave finali.

realizzazione

Creeremo una classe astratta azionedi giocosu misura, in cui il metodo di modello è impostato alla finale, quindi non verranno sovrascritti.CricketandFootballGame è un'estensione della classe entità, che sostituisce la classe astratta.

TemplatePatternDemo,dimostriamo l'uso di una classedi giocoper dimostrare l'uso di un modello di template.

modello modello di diagramma UML

fase 1

Creare una classe astratta, il suo metodo modello è impostato finale.

Game.java

classe astratta pubblica Gioco {
   vuoto initialize astratto ();
   abstract void startPlay ();
   vuoto gioco assiale astratto ();

   // Modello di gioco pubblico finale void () {

      // Inizializza l'inizializzazione del gioco ();

      // Inizia il gioco startPlay ();

      // End gioco gioco assiale ();
   }
}

fase 2

Creare estende le classi di entità sopra di classe.

Cricket.java

public class Cricket estende Gioco {

   @Override
   vuoto gioco assiale () {
      System.out.println ( "Cricket gioco finito!");
   }

   @Override
   initialize void () {
      System.out.println ( "! Gioco Calcio Initialized iniziare a giocare.");
   }

   @Override
   vuoto startPlay () {
      System.out.println ( "Grillo partita inizia godere il gioco.!");
   }
}

Football.java

public class Calcio estende Gioco {

   @Override
   vuoto gioco assiale () {
      System.out.println ( "Il calcio gioco finito!");
   }

   @Override
   initialize void () {
      System.out.println ( "! Gioco Calcio Initialized iniziare a giocare.");
   }

   @Override
   vuoto startPlay () {
      System.out.println ( "Il calcio di gioco è godersi il gioco.!");
   }
}

fase 3

Giococon il metodo del modello di gioco () per dimostrare il gioco sono definiti.

TemplatePatternDemo.java

public class TemplatePatternDemo {
   Main (string [] args) {public static void

      gioco gioco = new Cricket ();
      game.play ();
      System.out.println ();
      gioco = new Calcio ();
      game.play ();		
   }
}

fase 4

Verifica uscita.

Cricket gioco inizializzato! Inizia a giocare.
Cricket partita inizia. Godetevi il gioco!
Cricket gioco finito!

Gioco Calcio Initialized! Inizia a giocare.
Calcio partita inizia. Godetevi il gioco!
Calcio gioco finito!