Entwurfsmuster - Schablone
Entwurfsmuster - Schablone
Entwurfsmuster - Schablone
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Schablone</strong><br />
<strong>Entwurfsmuster</strong><br />
<strong>Schablone</strong><br />
Michael Blaich<br />
HTWG Konstanz - Fakultät Informatik<br />
22. Januar 2009<br />
1 / 12
<strong>Schablone</strong><br />
Inhalt<br />
Motivation<br />
Anwendbarkeit<br />
Struktur<br />
Konsequenz<br />
Fazit<br />
2 / 12
<strong>Schablone</strong><br />
Motivation<br />
Definiert das Skelett eines Algorithmus<br />
Delegiert einzelne Schritte an Unterklassen<br />
Unterklassen können einzelne Schritte überschreiben ohne die<br />
Struktur zu ändern<br />
3 / 12
<strong>Schablone</strong><br />
Beispiel Application-Framework<br />
Ein Application-Framework stellt eine Anwendungsklasse und eine<br />
Dokumentenklasse zur Verfügung. Mit diesem Framework können<br />
dann z.B. Zeichenanwendungen oder Tabellenkalkulationen erstellt<br />
werden.<br />
4 / 12
<strong>Schablone</strong><br />
Beispielimplementierung einer <strong>Schablone</strong>nmethode<br />
v o i d Anwendung : : oeffneDokument ( c o n s t c h a r ∗ name ){<br />
i f ( ! kannDokumentOffnen ( name ){<br />
// Dokument kann n i c h t g e o e f f n e t werden<br />
r e t u r n ;<br />
}<br />
}<br />
Dokument∗ dok = erzeugeDokument ( ) ;<br />
i f ( dok ){<br />
fuegeDokumentHinzu ( dok ) ;<br />
vorDokumentOeffnen ( dok ) ;<br />
dok−>o e f f n e ( ) ;<br />
dok−>l i e s E i n ( ) ;<br />
5 / 12
<strong>Schablone</strong><br />
Anwendbarkeit<br />
Eine <strong>Schablone</strong>nmethode sollte verwendet werden:<br />
um die Struktur eines Algorithmus genau einmal festzulegen<br />
und das Verhalten der einzelnen Schritte der Unterklasse zu<br />
überlassen<br />
wenn gemeinsames Verhalten von Unterklassen<br />
herausfaktorisiert werden kann um die Verdopplung von Code<br />
zu vermeiden<br />
um Erweiterungen durch Unterklassen zu kontrollieren<br />
(Einschubmethode)<br />
6 / 12
<strong>Schablone</strong><br />
Struktur des Musters<br />
7 / 12
<strong>Schablone</strong><br />
Teilnehmer<br />
AbstrakteKlasse (Anwendung)<br />
implementiert die <strong>Schablone</strong>nmethode zur Definition des<br />
Ablaufs eines Algorithmus<br />
definiert abstrakte primitive Operationen die von konkreten<br />
Unterklassen implementiert werden<br />
KonkreteKlasse (ZeichenAnwedung)<br />
implementiert die primitiven Operationen, welche die<br />
unterklassenspezifischen Schritte des Algorithmus ausführen<br />
8 / 12
<strong>Schablone</strong><br />
Konsequenz<br />
<strong>Schablone</strong>nmethoden stellen eine grundlegende Technik zur<br />
Wiederverwendung von Code da.<br />
Herausfaktorisierung von gemeinsamem Verhalten<br />
invertierter Kontrollfluss (“Hollywood-Prinzip“)<br />
<strong>Schablone</strong>nmethoden rufen folgende Operationen auf:<br />
konkrete Operationen der KonkretenKlasse<br />
erzeugeDokument()<br />
konkrete Operationen der KlientenKlasse liesEin()<br />
konkrete Operationen der AbstraktenKlasse<br />
fuegeDokumentHinzu()<br />
Einschubmethoden vorDokumentOeffnen()<br />
9 / 12
<strong>Schablone</strong><br />
Fazit<br />
<strong>Schablone</strong>nmethoden sind so grundlegend, dass sie von vielen<br />
bei der Implementierung von abstrakten Klassen verwendet<br />
werden, ohne den Namen des Musters zu kennen.<br />
Bei der Implementierung von <strong>Schablone</strong>nmethoden sollte auf<br />
folgendes geachtet werden:<br />
möglichst wenig primitive Operationen die überschrieben<br />
werden müssen<br />
die primitiven Operationen sollten nur aus der<br />
<strong>Schablone</strong>nmethode aufgerufen werden können<br />
10 / 12
<strong>Schablone</strong><br />
Verwandte Muster<br />
Fabrikmethoden werden oft von <strong>Schablone</strong>nmethoden<br />
aufgerufen<br />
Strategien verwenden Delegation, um den gesamten<br />
Algorithmus zu verändern<br />
11 / 12
<strong>Schablone</strong><br />
Quellen<br />
Erich Gamme, Richard Helm, Ralph Johnson, John Vlissides<br />
Enwurfsmuster.<br />
Addison-Wesley Verlag 2004<br />
12 / 12