Klassifizierung |
klassenbasiertes Verhaltensmuster
|
| |
Zweck |
Skelett eines Algorithmus festlegen
einzelne Arbeitsschritte an Unterklassen delegieren
|
| |
Alias |
template method
|
| |
Motivation und Beispiele |
|
|
in einer GUI-Umgebung soll die event loop
entkoppelt werden von der Verarbeitung der events
|
|
Container für eine Liste mit vielen
Methoden fertig
einige Methoden, z.B. das Sortieren bleiben offen
|
|
ein Sortieralgorithmus wird implementiert
aber das Sortierkriterium bleibt offen
Beispiel in Java
|
|
|
| |
Anwendbarkeit |
|
|
invariante Teile in Basisklassen festlegen
|
|
variable Teile in Unterklassen
anwendungsspezifisch implementieren
|
|
Vermeidung von Codeverdopplung
|
| |
Struktur |
Strukturdiagramm
|
| |
Teilnehmer |
|
AbstrakteKlasse |
definiert abstrakte "primitive" Operationen
--> Verarbeitungsschritte
definiert konkrete Schablonenmethode
--> Kontrollstruktur
|
KonkreteKlasse[1-2] |
implementieren verschiedene "primitive" Operationen
|
| |
Konsequenzen |
|
|
Trennung: feste <--> variable Teile eines Algorithmus
|
|
primitive Operationen werden statisch festgelegt
nicht dynamisch konfigurierbar
|
|
|
| |
Implementierung |
|
|
im einfachsten Fall entfällt die Schablonenmethode
--> Sortieralgorithmen
|
| |
Bekannte Verwendungen |
in einfacher Form überall
häufig in Containerklassen
|
| |
verwandte Muster |
|
|
objektbasiertes Muster mit gleicher Motivation
aber mehr Flexibilität
|
| |