é 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?


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 ...


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.