Inhalt | Abbildung | Source | OO-Designkurs | |||
|< | < | > | >| | Generated by CoCoDiL |
Ein einfaches Beispiel zur Einführung:
Diskussion: Was passiert falls es noch eine Unterklasse von Employee gibt, ohne dem Attribut Name ?
Die Methoden in der Unterklassen haben die gleiche Struktur, sind aber nicht identisch.
codeBlock1 und codeBlock3 sind jeweils identisch, codeBlock2 und codeBlock4 sind unterschiedlich.
1. Extrahiere die Methoden in den Unterklassen. Gebe den extrahierten Methoden dieselben Namen.
2. Schiebe die identischen Methoden der Unterklasse, in die Oberklasse.
3. Erzeuge in den Oberklasse für die verschiedenen Blöcke abstrakte Klassen
Der eigentliche Algorithmus steht in der Oberklasse. Die Methoden code2() bzw. code4() nennt man hook-up Methoden da sie sich in den Algorithmus einklingen. Die Methode myMethod in der Oberklasse ist eine template-Methode.
Refactoring Form Template Method Entwurfsmuster Schablonenmethode (Template Method) |
Probleme mit Vererbung:
Hier ein völlig verunglücktes Objektmodell:
Dies ist ein abschreckendes Beispiel von paralleler Vererbungshierarchie. Eine Änderung an LKW muss in 2 verschiedenen Klassen nachvollzogen werden. Mögliche Lösungen:
In der obigen Lösung kann im Auto die Gangschaltung ausgetauscht werden.
Die Vererbung ist zwar ein typisches Kennzeichen von OO, man sollte sie aber vorsichtig einsetzen. Bevorzuge kleine Vererbungshierarchien |
Inhalt | Abbildung | Source | OO-Designkurs | |||
|< | < | > | >| | Generated by CoCoDiL |