Mam problem z korzystaniem z właściwego łańcucha dziedziczenia bez utraty dobrych części zasady DRY.Dwa różne łańcuchy dziedziczenia bez łamania zasady DRY
Biorąc pod uwagę następującą strukturę:
- abstrakcyjna klasa A jest moja baza dla wszystkich klas
- abstrakcyjna klasa B: A jest moja baza dla wszystkich klas, które mogą mieć szczególne cechy (udostępnione przez B)
Teraz muszę mieć dwie nowe klasy, które mają te same funkcje. Ale jeden jest typu A, a drugi jest typu B. (Nie można tego zmienić!) Obie klasy powinny mieć metodę SetSize()
.
Tak więc na końcu będzie klasa C: A i D: B, obie mają tę samą metodę SetSize.
Pytanie: W jaki sposób utworzyć warstwę pośrednią, warstwę pośrednią, aby uzyskać SetSize()
-metodę zadeklarowaną/zaimplementowaną tylko raz (DRY)? Chyba coś o użyciu interfejsów lub niektórych statycznych klas pomocniczych do wdrożenia logiki SetSize()
?
Czy istnieją jakieś wzorce lub najlepsze praktyki, aby osiągnąć to zachowanie?
Powiązane - [Preferuj kompozycję nad dziedziczeniem] (http://stackoverflow.com/questions/49002/prefer-composition-over-initance) –
Czy zachowanie "SetSize" będzie takie samo dla wszystkich implementacji? (zarówno dla klas typu A i B, jak wspomniałeś 'sucho')? – Yogi
@Yogi Metoda będzie dokładnie taka sama dla obu implementacji. To dlatego szukam sposobu, aby mieć go w jednym punkcie – KingKerosin