Le modèle de méthode de modèle est défini comme:
Un squelette ou une étape d'un algorithme est défini dans une méthode, et certaines étapes sont retardées aux sous-classes pour la mise en œuvre. La méthode du modèle permet aux sous-classes de redéfinir certaines étapes de l'algorithme sans modifier la structure de l'algorithme.
La méthode de modèle définit une séquence de processus de fonctionnement dans la classe de base, qui peut garantir que les étapes sont effectuées en séquence. Certaines implémentations spécifiques de certaines étapes ont été déclarées dans la classe de base, et les implémentations spécifiques de certaines étapes changeantes sont remises à la sous-classe pour implémenter, retardant ainsi certaines étapes dans la sous-classe. L'un des plus grands avantages de la méthode du modèle est qu'il peut définir un processus métier à exécuter dans un certain ordre strict, contrôlant les étapes d'exécution de l'ensemble de l'algorithme.
Cette méthode définit l'algorithme en un ensemble d'étapes, dans lesquelles toutes les étapes qui souhaitent que la sous-classe effectue une implémentation personnalisée est définie comme des méthodes abstraites. La caractéristique des classes de base abstraites est que la méthode du modèle est généralement définie sur Final, ce qui empêche la sous-classe de remplacer les étapes de l'algorithme, d'implémenter certaines des mêmes opérations ou étapes directement dans la classe de base, et de définir certaines des étapes changeantes en abstraite et la sous-classe à terminer.
Exemple d'implémentation Java
Diagramme de classe:
/ ** * Modèle de processus métier, fournissant le cadre de base * / classe publique Résumé Basetemplate {public abstract void part1 (); Public abstrait void Part2 (); Public abstrait void Part3 (); // Afin de strictement expérimental les résultats, Final ne peut pas être réécrit en utilisant le void final useTemplateMethod () {part1 (); partie2 (); partie3 (); }} / ** * Méthode d'implémentation du modèle 1 * / classe publique TemplateMethod étend Basetemplate {@Override public void part1 () {System.out.println ("la méthode du modèle 1"); } @Override public void part2 () {System.out.println ("Modèle Méthode 2"); } @Override public void part3 () {System.out.println ("Modèle Méthode 3"); }} / ** * Méthode d'implémentation du modèle 2 * @Author Stone * * / public class templateMethod2 étend Basetemplate {@Override public void part1 () {System.out.println ("Modèle Méthode 11"); } @Override public void part2 () {System.out.println ("Modèle Méthode 22"); } @Override public void part3 () {System.out.println ("Modèle Méthode 33"); }} Public Class Test {public static void main (String [] args) {Basetemplate tm = new TemplateMethod (); tm.UseTemplateMethod (); System.out.println (""); BaseTemplate TM2 = nouveau TemplateMethod2 (); TM2.UseTemplateMethod (); }}Imprimer:
Modèle de modèle 1 Modèle de modèle 2 Méthode de modèle 3 Méthode du modèle 11 Méthode du modèle 22 Modèle Modèle 33