è 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 una singola classe.

Gli ultimi due sono abbastanza diversi nello scope per condividere solo una singola funzione (la funzione per produrre i collegamenti finali) nelle loro classi.

È ragionevole, in questa istanza o in un numero qualsiasi di istanze ipotetiche simili, estendere la classe originale per avere quella funzionalità o esiste un modo migliore?

    
posta Mild Fuzz 05.10.2011 - 16:25
fonte

2 risposte

19

No, se le due classi sono così diverse che condividono solo una funzione, è probabile che non siano intercambiabili - e quindi interromperanno principio di sottolizione liskov .

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

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

    
risposta data 05.10.2011 - 16:36
fonte
7

Se una descrizione di classe contiene la parola " e ", dovrebbe essere suddivisa in due (o più) classi. In base all'aspetto delle cose, potresti rendere quella funzione un membro di un'altra classe a cui fa riferimento quella che hai attualmente.

    
risposta data 05.10.2011 - 16:30
fonte

Leggi altre domande sui tag