è una pratica ragionevole estendere una classe solo per riutilizzare una singola funzione?


10

Sto sviluppando una gamma di filtri post per un sito wordpress e ho creato i primi 4 con un'unica classe.

Gli ultimi due hanno una portata abbastanza diversa da condividere una sola funzione (la funzione per produrre i collegamenti finali) nelle loro classi.

È ragionevole, in questo caso o in un numero qualsiasi di casi ipotetici simili, estendere la classe originale per avere quella funzionalità o esiste un modo migliore?


Non capisco questa domanda. Cosa intendi per costruzione di cose con una classe? Queste classi sono ereditate da qualcosa? La classe in cima alla gerarchia non avrebbe già la funzione comune?
David Thornley,

Risposte:


19

No, se le due classi sono così diverse da condividere una sola funzione, è probabile che non siano intercambiabili - e quindi infrangerebbero il principio della sottostazione di Liskov .

Deriva da una classe base solo se è logico farlo. La condivisione di un singolo codice è raramente una giustificazione per l'ereditarietà :)

In questo esempio particolare sembra che tu voglia riutilizzare quella funzione tramite la composizione invece ...


3
Preferisci la composizione rispetto all'eredità! Nella maggior parte dei casi questo ti renderà la vita più semplice a lungo termine.
Travis,

Composizione FTW!
back2dos,

Vale la pena notare che la mia risposta è sostanzialmente la stessa di @Sardathrion, ho appena collegato ai principi
pertinenti

7

Se una descrizione di classe contiene la parola " e ", dovrebbe essere suddivisa in due (o più) classi. A quanto pare, potresti rendere tale funzione un membro di un'altra classe a cui fa riferimento quello che hai attualmente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.