mode Gabarit
Dans le mode de gabarit (Template Pattern), et une classe abstraite qui définit comment l'exécuter décrit un procédé / template. Ses sous-classes doivent remplacer la méthode peut atteindre, mais est appelée classe abstraite sera définie. Ce type de modèles de conception appartiennent schémas comportementaux.
introduction
Intention: Définir un algorithme de fonctionnement du squelette, tout en reportant certaines étapes aux sous - classes.Méthode modèle permet de sous-classes d'un algorithme sans changer la structure d'une étape particulière de l'algorithme peut être redéfini.
Solution principale: une méthode commune, mais dans chaque sous-classe récrire cette approche.
Quand utiliser: Il existequelques méthodes communes.
Comment résoudre: ces algorithme général abstrait.
Le code clé: résumé classe implémente les autres étapes de la mise en œuvre sous-classe.
Exemples d'application: 1, lorsque dans une maison construite, les fondations, le câblage, les conduites d'eau sont les mêmes, que dans la dernière partie du bâtiment ont un placard plus plus de clôtures et d' autres différences.2, Journey to the West a établi un bon Bouddha à l'intérieur 81 difficile, cela est un cadre logique de niveau supérieur. 3, spirng à l'appui Hibernate, certains ont déjà donné un bon moyen d'encapsuler, telles que les transactions ouvertes, l'obtention Session, Fermer la session et d'autres programmeurs qui ne sont pas répétées écrire de bonnes normes de code, touche directe d'une entité peut être sauvé.
Avantages: 1, partie du même paquet, étendu part variable.2, extraire le code commun, facile à entretenir. 3, le comportement est contrôlé par la classe parente, la mise en œuvre sous-classe.
Inconvénients: chacune des différentes mises en oeuvre ont besoin d' une sous - classe pour réaliser, ce qui entraîne une augmentation du nombre de classes, ce qui rend le système plus important.
Scénarios d' utilisation:1, méthode commune sous-catégories multiples, et la même logique. 2,, les méthodes complexes importants peuvent être considérés comme une méthode de modèle.
Remarque: Pour éviter des actions malveillantes, couplées avec les méthodes de modèles généraux sont des mots - clés finaux.
réalisation
Nous allons créer unjeud'action personnalisé classe abstraite, dans lequel le procédé de modèle est défini pour la finale, donc il ne sera pas écrasé.CricketetFootballGame est une extension de classes d'entités, et ils ont réécrit la classe abstraite.
TemplatePatternDemo,nous démontrons l'utilisation de la classede jeupour démontrer l'utilisation d'un modèle de modèle.
Etape 1
Créer une classe abstraite, sa méthode de modèle est défini à la finale.
Game.java
Jeu public abstract class { abstract initialize void (); abstract void StartPlay (); abstrait jeu axial vide (); // Template jeu vide public final () { // Initialisation de la initialize de jeu (); // Démarrer le jeu StartPlay (); // Fin du jeu le jeu axial (); } }
Etape 2
Créer étend les classes d'entités ci-dessus classe.
Cricket.java
Cricket public class jeu { @Override vide jeu axial () { System.out.println ( "Jeu de Cricket Terminé!"); } @Override initialize void () { System.out.println ( "! Cricket Jeu Initialisé Commencez à jouer."); } @Override vide StartPlay () { System.out.println ( "Cricket jeu a commencé Appréciez le jeu.!"); } }
Football.java
Football public class jeu { @Override vide jeu axial () { System.out.println ( "Game Football Terminé!"); } @Override initialize void () { System.out.println ( "! Football Game Initialisé Commencez à jouer."); } @Override vide StartPlay () { System.out.println ( "Football Game Started Appréciez le jeu.!"); } }
Etape 3
Jeuen utilisant le modèle de méthode play () pour démontrer le jeu sont définis.
TemplatePatternDemo.java
public class TemplatePatternDemo { main (String [] args) {public static void Game jeu = new Cricket (); game.play (); System.out.println (); jeu = new Football (); game.play (); } }
Etape 4
Vérifiez la sortie.
Jeu de Cricket initialisée! Commencez à jouer. Cricket Game Démarré. Profitez du jeu! Jeu de Cricket Terminé! Football Game Initialisé! Commencez à jouer. Football jeu a commencé. Profitez du jeu! Jeu de Football Terminé!