Schablone-Methode-Muster

In der Softwaretechnik ist das Schablone-Methode-Muster ein Designmuster.

Es ist ein Verhaltensmuster, und ist zu C ++ Schablonen ohne Beziehung.

Einführung

Eine Schablone-Methode definiert das Programm-Skelett eines Algorithmus. Ein oder mehr von den Algorithmus-Schritten kann durch Unterklassen überritten werden, um zu erlauben, sich Handlungsweisen zu unterscheiden, während man sicherstellt, dass dem sich überwölbenden Algorithmus noch gefolgt wird.

In der objektorientierten Programmierung zuerst wird eine Klasse geschaffen, der die grundlegenden Schritte eines Algorithmus-Designs zur Verfügung stellt. Diese Schritte werden mit abstrakten Methoden durchgeführt. Später ändern Unterklassen die abstrakten Methoden, echte Maßnahmen zu treffen. So wird der allgemeine Algorithmus in einem Platz gespart, aber die konkreten Schritte können durch die Unterklassen geändert werden.

Die Schablone-Methode führt so das größere Bild der Aufgabe-Semantik, und die mehr raffinierten Durchführungsdetails der Auswahl und die Folge von Methoden. Dieses größere Bild nennt abstrakte und nichtabstrakte Methoden nach der Aufgabe in der Nähe. Die nichtabstrakten Methoden werden von der Schablone-Methode völlig kontrolliert, aber die abstrakten Methoden, die in Unterklassen durchgeführt sind, stellen Sie die ausdrucksvolle Macht des Musters und Grad der Freiheit zur Verfügung. Einige oder alle abstrakten Methoden können in einer Unterklasse spezialisiert werden, dem Schriftsteller der Unterklasse erlaubend, besonderes Verhalten mit minimalen Modifizierungen zur größeren Semantik zu versorgen. Die Schablone-Methode (der nichtabstrakt ist) bleibt unverändert in diesem Muster, sicherstellend, dass die untergeordneten nichtabstrakten Methoden und abstrakten Methoden die ursprünglich beabsichtigte Folge herbeigerufen werden.

Die Schablone-Methode kommt oft mindestens in seinem einfachsten Fall vor, wo eine Methode nur eine abstrakte Methode mit orientierten Sprachen des Gegenstands nennt. Wenn ein Softwareschriftsteller eine polymorphe Methode überhaupt verwendet, kann dieses Designmuster eine ziemlich natürliche Folge sein. Das ist, weil eine Methode, die eine abstrakte oder polymorphe Funktion nennt, einfach der Grund dafür ist, der abstrakten oder polymorphen Methode zu sein. Die Schablone-Methode kann verwendet werden, um unmittelbaren aktuellen Wert zur Software oder mit einer Vision zu Erhöhungen in der Zukunft hinzuzufügen.

Das Schablone-Methode-Muster ist stark mit dem Muster von Non-Virtual Interface (NVI) verbunden. Das NVI Muster erkennt die Vorteile einer nichtabstrakten Methode an, die die untergeordneten abstrakten Methoden anruft. Dieses Niveau des Umwegs berücksichtigt pre und Postoperationen hinsichtlich der abstrakten Operationen sowohl sofort als auch mit zukünftigen ungeahnten Änderungen. Das NVI Muster kann mit sehr wenig Softwareproduktion und Laufzeitkosten aufmarschiert werden. Vieles kommerzielles Softwarefachwerk verwendet das NVI Muster.

Schablone-Methode führt den Geschützten Schwankungs-GRIFF-Grundsatz wie der Adapter durch, den das Muster tut. Der Unterschied ist, dass Adapter dieselbe Schnittstelle für mehrere Operationen gibt, während Schablone-Methode so nur für eine tut.

Struktur

Gebrauch

Die Schablone-Methode ist gewöhnt an:

  • lassen Sie Unterklassen (durch das Methode-Überlaufen) Verhalten durchführen, das ändern kann
  • vermeiden Sie Verdoppelung im Code: Die allgemeine Arbeitsablauf-Struktur wird einmal im Algorithmus der abstrakten Klasse durchgeführt, und notwendige Schwankungen werden in jeder der Unterklassen durchgeführt.
  • Kontrolle daran, was dem Subklassifizieren des Punkts (E) erlaubt wird. Im Vergleich mit einem einfachen polymorphen überreiten, wo die Grundmethode völlig umgeschrieben würde, radikale Änderung zum Arbeitsablauf erlaubend, wird nur den spezifischen Details des Arbeitsablaufs erlaubt sich zu ändern.

Die Kontrollstruktur (Inversion der Kontrolle), der das Ergebnis der Anwendung eines Schablone-Musters ist, wird häufig den Grundsatz von Hollywood genannt: "Nennen Sie uns nicht, wir werden Sie nennen." Mit diesem Grundsatz kontrolliert die Schablone-Methode in einer Elternteilklasse den gesamten Prozess durch das Benennen von Unterklasse-Methoden, wie erforderlich. Das wird im folgenden javanischen Beispiel gezeigt:

Beispiel

/ * *

* Eine abstrakte Klasse, die ist

* üblich für mehrere Spiele in

*, welche Spieler gegen spielen

* andere, aber sind nur ein

*, zu einem festgelegten Zeitpunkt spielend.

*/

abstrakte Klasse Game {\

geschützte interne Nummer playersCount;

abstrakte Leere initializeGame ;

abstrakte Leere makePlay (int Spieler);

Auszug boolean endOfGame ;

abstrakte Leere printWinner ;

/* Eine Schablone-Methode: * /

öffentliche Endleere playOneGame (interne Nummer playersCount) {\

this.playersCount = playersCount;

initializeGame ;

interne Nummer j = 0;

während (! endOfGame ) {\

makePlay (j);

j = (j + 1) % playersCount;

}\

printWinner ;

}\}\

//Jetzt können wir diese Klasse in der Ordnung erweitern

//wirkliche Spiele durchzuführen:

Klassenmonopol erweitert Spiel {\

/* Durchführung von notwendigen konkreten Methoden * /

Leere initializeGame {\

//Initialisieren Sie Spieler

//Initialisieren Sie Geld

}\

Leere makePlay (int Spieler) {\

//Bearbeiten Sie eine Umdrehung des Spielers

}\

boolean endOfGame {\

//Kehren Sie wahr zurück, wenn Spiel über ist

//gemäß Monopolregeln

}\

Leere printWinner {\

//Anzeige, wer gewonnen

hat }\

/* Spezifische Behauptungen für das Monopolspiel. * /

//...

}\

Klassenschach erweitert Spiel {\

/* Durchführung von notwendigen konkreten Methoden * / Leere initializeGame {\ //Initialisieren Sie Spieler

//Stellen Sie die Stücke auf den Ausschuss

}\ Leere makePlay (int Spieler) {\

//Bearbeiten Sie eine Umdrehung für den Spieler

}\ boolean endOfGame {\

//Kehren Sie wahr wenn im Schachmatt oder zurück

//Patt ist erreicht worden

}\ Leere printWinner {\

//Zeigen Sie den gewinnenden Spieler

}\

/* Spezifische Behauptungen für das Schachspiel. * /

//...}\</Quelle>

Siehe auch

  • Erbe (Informatik)
  • Das Methode-Überlaufen, (programmierend)
  • GRIFF (objektorientiertes Design)
  • Adapter-Muster

Außenverbindungen


Strategie-Muster / Märkisch-Oderland
Impressum & Datenschutz