08.10.2013 Aufrufe

Entwurfsmuster - Schablone

Entwurfsmuster - Schablone

Entwurfsmuster - Schablone

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!