czy rozsądną praktyką jest przedłużenie klasy tylko w celu ponownego wykorzystania jednej funkcji?


10

Rozwijam szereg filtrów pocztowych dla witryny Wordpress i zbudowałem pierwsze 4 z jedną klasą.

Ostatnie dwa są wystarczająco różne, aby dzielić tylko jedną funkcję (funkcję tworzenia końcowych łączy) w swoich klasach.

Czy rozsądne jest, w tym przypadku lub w dowolnej liczbie podobnych hipotetycznych przypadków, rozszerzenie oryginalnej klasy w celu uzyskania takiej funkcjonalności, czy też istnieje lepszy sposób?


Nie rozumiem tego pytania. Co masz na myśli, budując rzeczy z klasą? Czy te klasy dziedziczą po czymś? Czy klasa na szczycie hierarchii nie miałaby już wspólnej funkcji?
David Thornley,

Odpowiedzi:


19

Nie, jeśli dwie klasy są tak różne, że dzielą tylko jedną funkcję, istnieje prawdopodobieństwo, że nie będą się one zamieniać - i dlatego złamałyby zasadę podstawienia Liskowa .

Pochodzą z klasy podstawowej tylko wtedy, gdy jest to logiczne. Udostępnianie jednego fragmentu kodu rzadko uzasadnia dziedziczenie :)

W tym konkretnym przykładzie brzmi to tak, jakbyś chciał ponownie użyć tej funkcji poprzez kompozycję zamiast ...


3
Wolę kompozycję niż dziedziczenie! W większości przypadków ułatwi to życie na dłuższą metę.
Travis,

Skład FTW!
back2dos,

Warto zauważyć, że moja odpowiedź jest w zasadzie taka sama jak @Sardathrion, właśnie powiązałem z odpowiednimi zasadami :)
MattDavey

7

Jeśli opis klasy zawiera słowo „ i ”, należy go podzielić na dwie (lub więcej) klasy. Wygląda na to, że możesz uczynić tę funkcję członkiem innej klasy, do której odwołują się te, które aktualnie masz.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.