Ich habe ein Problem mit der richtigen Vererbungskette, ohne dabei gute Teile des DRY-Prinzips zu verlieren.Zwei verschiedene Vererbungsketten ohne das DRY-Prinzip zu brechen
die folgende Struktur wiedergegeben:
- abstrakte Klasse A ist meine Basis für alle Klassen
- abstrakte Klasse B: Eine meine Basis für alle Klassen ist, die speziellen Eigenschaften (zur Verfügung gestellt durch B) haben
Jetzt muss ich zwei neue Klassen haben, die die gleichen Funktionen teilen. Aber einer ist vom Typ A, während der andere vom Typ B ist. (Dies kann nicht geändert werden!) Beide Klassen sollten eine Methode SetSize()
haben.
Also wäre am Ende Klasse C: A und D: B, beide hätten die gleiche SetSize-Methode.
Frage: Wie würde ich eine Basisklasse, Zwischenschicht erstellen, damit die SetSize()
-Methode nur einmal (DRY) deklariert/implementiert wird? Ich denke etwas über die Verwendung von Schnittstellen oder einige statische Helfer-Klassen, um die Logik von SetSize()
zu implementieren?
Gibt es Muster oder Best Practices, um dieses Verhalten zu erreichen?
Related - [Bevor Vererbung über Vererbung] (http://stackoverflow.com/questions/49002/prefer-composition-over-heritance) –
Ist das Verhalten von 'SetSize' für alle Implementierungen identisch? (beide für Klassen vom Typ A und B, wie Sie "trocken" erwähnt haben)? – Yogi
@Yogi Die Methode ist für beide Implementierungen identisch. Deshalb suche ich nach einem Weg, um es an einem einzigen Punkt zu haben – KingKerosin