Mode modèle
Dans le Template Pattern, une classe abstraite définit publiquement une manière/un modèle pour exécuter ses méthodes. Ses sous-classes peuvent remplacer l'implémentation de la méthode si nécessaire, mais les appels seront effectués de la manière définie dans la classe abstraite. Ce type de modèle de conception est un modèle comportemental.
Introduction
Intention : Définir le squelette d'un algorithme au sein d'une opération, tout en reportant certaines étapes aux sous-classes. Les méthodes modèles permettent aux sous-classes de redéfinir des étapes spécifiques d'un algorithme sans modifier la structure de l'algorithme.
Solution principale : Certaines méthodes sont courantes, mais cette méthode est réécrite dans chaque sous-classe.
Quand utiliser : Il existe quelques méthodes générales.
Comment résoudre : Résumer ces algorithmes généraux.
Code clé : est implémenté dans la classe abstraite et d'autres étapes sont implémentées dans la sous-classe.
Exemples d'application : 1. Lors de la construction d'une maison, les fondations, le câblage et les conduites d'eau sont tous les mêmes. Ce n'est que dans les étapes ultérieures de la construction qu'il y a des différences telles que l'ajout de placards et. clôtures. 2. Les 81 difficultés fixées par le Bodhisattva dans Journey to the West constituent un cadre logique de haut niveau. 3. La prise en charge d'Hibernate dans Spirng encapsule certaines méthodes prédéterminées, telles que l'ouverture de transactions, l'obtention de sessions, la fermeture de sessions, etc. Les programmeurs n'ont pas besoin d'écrire à plusieurs reprises le code standardisé et peuvent le sauvegarder en lançant simplement une entité.
Avantages : 1. Encapsulez les parties constantes et développez les parties variables. 2. Extrayez le code public pour faciliter la maintenance. 3. Le comportement est contrôlé par la classe parent et implémenté par la sous-classe.
Inconvénients : Chaque implémentation différente nécessite une sous-classe à implémenter, ce qui entraîne une augmentation du nombre de classes et un agrandissement du système.
Scénarios d'utilisation : 1. Il existe des méthodes communes à plusieurs sous-classes, et la logique est la même. 2. Les méthodes importantes et complexes peuvent être considérées comme des méthodes modèles.
Remarque : Pour éviter les opérations malveillantes, le mot-clé final est généralement ajouté aux méthodes du modèle.
Implémentation
Nous allons créer une classe abstraite Game qui définit l'action, où la méthode du modèle est définie sur final afin qu'elle ne soit pas remplacée. Cricket et Football sont des classes d'entités qui étendent Game et remplacent les méthodes de la classe abstraite.
TemplatePatternDemo, notre classe de démonstration utilise Game pour démontrer l'utilisation du modèle de modèle.
Étape 1
Créez une classe abstraite avec sa méthode de modèle définie sur final.
Game.java
public abstract class Game { abstract void initialize(); abstract void startPlay(); abstract void endPlay(); //模板 public final void play(){ //初始化游戏 initialize(); //开始游戏 startPlay(); //结束游戏 endPlay(); } }
Étape 2
Créez une classe d'entité qui étend la classe ci-dessus.
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!"); } }
Étape 3
Utiliser La méthode modèle play() de Game montre comment le jeu est défini.
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(); } }
Étape 4
Vérifiez la sortie.
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!