Entwurfsmuster / Design Pattern: Die Schablonenmethode (Template Method)
Zweck
Definiert das Grundgerüst eines Algorithmus, überlässt aber den Unterklassen die Implementierung von Details. Unterklassen können die variablen Teile des Algorithmus unterschiedlich implementieren, das Grundgerüst des Algorithmus bleibt aber fest.
Motivation
Als Beispiel dient ein Rahmenwerk, in dem die Klassen Applikation und Dokument existieren. Die Klasse Applikation ist dafür verantwortlich, externe Dokumente zu öffnen, die z. B. in einer Datei gespeichert sind. Ein Dokument-Objekt repräsentiert die Information in dem Dokument, sobald es gelesen ist.
Applikationen, die das Rahmenwerk verwenden, definieren Unterklassen von Applikation und Dokument, die dem jeweiligen Problem angepasst sind. Beispielsweise werden für eine Graphikapplikation die Unterklassen GraphikApplikation und Graphik-Dokument definiert, während für eine Textapplikation die Unterklassen TextApplikation und TextDokument definiert würden.
Abbildung 1: Ein Beispiel einer Schablonenmethode
Abbildung 2: Verallgemeinerte Schablonenmethode
Anwendbarkeit
Man benutzt das Muster der Schablonenmethode,
- um die invarianten Teile eines Algorithmus nur einmal zu implementieren und die Implementierung der variablen Teile Unterklassen zu überlassen
- wenn gemeinsames Verhalten von Unterklassen in eine gemeinsame Oberklasse vereinigt werden soll, um Codeduplizierung zu vermeiden. Hierzu wird der variable Teil des Codes in separate Methoden ausgelagert, die von einer Schablonenmethode der Oberklasse aufgerufen werden
- um gezieltes Erweitern durch Unterklassen zu erlauben.
Konsequenzen
Schablonenmethoden sind eine grundlegende Technik zur Codewiederverwendung. In Klassenbibliotheken sind sie besonders wichtig, da sie das gemeinsame Verhalten von Bibliotheksklassen herausfaktorisieren.
Schablonenmethoden führen zu einer invertierten Kontrollstruktur mit dem Namen Hollywood-Prinzip: „Don’t call us, we’ll call you“. Dies bezieht sich darauf, dass die Oberklasse die Unterklassenoperationen aufruft und nicht umgekehrt.
Aus der Dokumentation einer Klasse mit einer Schablonenmethode sollte klar hervorgehen, welche Methoden überschrieben werden müssen und welche Semantik diese haben.
Quellen
[1] Erich Gamma, Richard Helm, Ralph Johnson und John M. Vlissides Design Patterns — Elements of Reusable Object-Oriented Software Addison Wesley, Reading, MA, 1994
[2] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal Pattern-Oriented Software Architecture — A System of Patterns J. Wiley & Sons, Chichester, 1996
Leave Entwurfsmuster / Design Pattern: Die Schablonenmethode (Template Method) to:
Read more #deutsch posts
Best Posts From ozelot47
We have not curated any of ozelot47's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From ozelot47
- Ion Fury, Level 7: Alphabet Soup
- Funktionalgleichung mit Brüchen
- Eine Funktionalgleichung lösen
- Integral in Kombination mit der Substitution und Produktintegration lösen
- Ion Fury, Level 6: Abandonment Issues
- Beispiel einer Exponentialgleichung mithilfe der Substitution lösen
- Ein schöner Sonntagsspaziergang
- Ion Fury, Level 5: Reformation Plaza
- Eine Ampelblume im Garten
- Ion Fury, Level 4: Cultural Divide