Java Reference
In-Depth Information
4.9 Das Verhaltensmuster Schablonenmethode
4.9.1 Name/Alternative Namen
Schablonenmethode (engl. template method).
4.9.2 Problem
Die Struktur eines Algorithmus soll in der Basisklasse festgelegt werden, Einzelheiten
in einer Unterklasse.
Das Muster Schablonenmethode soll bereits in einer Basisklas-
se die Struktur eines Algorithmus festlegen. Realisiert werden sol-
len variante Teile des Algorithmus in Unterklassen.
4.9.3 Lösung
Das Muster Schablonenmethode wird für Algorithmen eingesetzt, die in Einzeloperatio-
nen zerlegt werden können. Die Struktur eines solchen Algorithmus aus abstrakten
Einzeloperationen und eventuell konkreten Einzeloperationen wird bereits in der Basis-
klasse festgelegt und in einer Schablonenmethode vorgegeben. Dabei werden be-
stimmte Einzeloperationen als Einschubmethoden (engl. hooks ) in abstrakter Form
in der Schablonenmethode eingeführt 53 . Das heißt, dass für diese abstrakten Einzel-
operationen in der Basisklasse nur deren Schnittstellen und Verträge vorgegeben wer-
den, die Implementierung wird an die Unterklassen delegiert.
Die Implementierung der Einschubmethoden in einer Unterklasse muss der Deklara-
tion der entsprechenden Einschubmethode in der Basisklasse genügen. Es ist mög-
lich, Einschubmethoden in verschiedenen abgeleiteten Klassen verschieden festzule-
gen und so verschiedene Varianten des Algorithmus zu erzeugen. Da das Muster
Schablonenmethode auf statischer Vererbung basiert, ist es ein klassenbasiertes Ent-
wurfsmuster.
Eine Schablonenmethode legt das Gerüst eines Algorithmus fest
und benutzt dabei abstrakte Einschubmethoden. Einschubmetho-
den werden in Unterklassen implementiert, wobei jede Unterklas-
se die Einschubmethoden unterschiedlich implementieren kann.
So kann jede Unterklasse eine andere Variante des Algorithmus
realisieren und die Basisklasse wird von den Unterklassen unab-
hängig.
53 In der Regel ist eine Einschubmethode abstrakt. Es gibt aber auch Varianten des Musters, bei denen
Einschubmethoden nicht abstrakt sind, sondern mit einem leeren Rumpf oder mit einem Rumpf, der
eine Standardimplementierung enthält, definiert werden. Diese Einschubmethoden werden dann in
den Unterklassen überschrieben.
Search WWH ::




Custom Search