Das Template -Method -Muster ist definiert als:
Ein Skelett oder ein Schritt eines Algorithmus wird in einer Methode definiert, und einige Schritte werden zur Implementierung auf Unterklassen verzögert. Mit der Vorlagenmethode können Unterklassen einige Schritte im Algorithmus neu definieren, ohne die Algorithmusstruktur zu ändern.
Die Vorlagenmethode definiert eine Betriebsprozesssequenz in der Basisklasse, die sicherstellen kann, dass die Schritte nacheinander durchgeführt werden. Einige spezifische Implementierungen einiger Schritte wurden in der Basisklasse deklariert, und die spezifischen Implementierungen einiger ändernder Schritte werden an die Unterklasse zur Umsetzung übergeben, wodurch einige Schritte in die Unterklasse verzögert werden. Einer der größten Vorteile der Vorlagenmethode besteht darin, dass ein Geschäftsprozess in einer bestimmten strengen Reihenfolge festgelegt werden kann, wodurch die Ausführungsschritte des gesamten Algorithmus kontrolliert werden.
Diese Methode definiert den Algorithmus in einer Reihe von Schritten, bei denen alle Schritte, die die Unterklasse für eine benutzerdefinierte Implementierung ausführen möchten, als abstrakte Methoden definiert werden. Das Merkmal abstrakter Basisklassen besteht darin, dass die Vorlagenmethode im Allgemeinen auf endgültig eingestellt ist, wodurch verhindert wird, dass die Unterklasse die Schritte des Algorithmus überschreiben, einige der gleichen Vorgänge oder Schritte direkt in der Basisklasse implementieren und einige der sich ändernden Schritte in Abstrakte und die Unterklasse abschließen.
Beispiel für Java -Implementierung
Klassendiagramm:
/ *** Business Process -Vorlage, die den grundlegenden Framework bereitstellt. public abstract void Part2 (); öffentliche abstrakte void part3 (); // Um streng experimentelle Ergebnisse zu erzielen, kann das endgültige nicht mit dem endgültigen void UsetemPlatemethod () {part1 () neu geschrieben werden; Part2 (); Part3 (); }} / ** * Vorlagen -Implementierungsmethode 1 */ public class templatemethod erweitert basetemplate {@Override public void part1 () {System.out.println ("Vorlagenmethode 1"); } @Override public void part2 () {System.out.println ("Vorlagenmethode 2"); } @Override public void part3 () {System.out.println ("Vorlagenmethode 3"); }} / ** * Vorlagen -Implementierungsmethode 2 * @author stone * */ public class templatemethod2 erweitert BaseTemplate {@Override public void part1 () {System.out.println ("Vorlagenmethode 11"); } @Override public void part2 () {System.out.println ("Vorlagenmethode 22"); } @Override public void part3 () {System.out.println ("Vorlagenmethode 33"); }} public class test {public static void main (String [] args) {BaSetemplate tm = new templatemethod (); tm.usetemplatemethod (); System.out.println (""); Basetemplate tm2 = neuer templatemethod2 (); tm2.usetemplatemethod (); }}Drucken:
Vorlagenmethode 1 Vorlagenmethode 2 Vorlagenmethode 3 Vorlagenmethode 11 Vorlagenmethode 22 Vorlagenmethode 33