é uma prática razoável estender uma classe apenas para reutilizar uma única função?

10

Estou desenvolvendo uma variedade de filtros de postagem para um site wordpress e construí os 4 primeiros com uma única classe.

Os dois finais têm escopo suficientemente diferente para compartilhar apenas uma única função (a função para produzir os links finais) em suas classes.

É razoável, neste caso ou em qualquer número de casos hipotéticos semelhantes, estender a classe original para ter essa funcionalidade ou existe uma maneira melhor?

Fuzz leve
fonte
Eu não entendo essa pergunta. O que você quer dizer com construir coisas com uma classe? Essas classes são herdadas de alguma coisa? A classe no topo da hierarquia já não teria a função comum?
precisa

Respostas:

19

Não, se as duas classes são tão diferentes que compartilham apenas uma função, as chances são de que não são intercambiáveis ​​- e, portanto, quebrariam o princípio da subestação liskov .

Derive apenas de uma classe base se for lógico fazer isso. Compartilhar um único pedaço de código raramente é uma justificativa para a herança :)

Neste exemplo em particular, parece que você deseja reutilizar essa função via composição ...

MattDavey
fonte
3
Prefira composição sobre herança! Na maioria dos casos, isso tornará sua vida mais simples a longo prazo.
Travis #
Composição FTW!
back2dos
Digno de nota a minha resposta é basicamente o mesmo que @Sardathrion, eu só ligado aos princípios relevent :)
MattDavey
7

Se uma descrição de classe tiver a palavra " e ", ela deverá ser dividida em duas (ou mais) classes. Pela aparência, você pode tornar essa função um membro de outra classe que é referenciada pelas que você possui atualmente.

Sardathrion - contra o abuso de SE
fonte