Estoy desarrollando una gama de filtros de publicación para un sitio de WordPress, y he creado los primeros 4 con una sola clase.
Los dos últimos tienen un alcance lo suficientemente diferente como para compartir una sola función (la función para producir los enlaces finales) en sus clases.
¿Es razonable, ya sea en este caso o en cualquier número de casos hipotéticos similares, extender la clase original para tener esa funcionalidad, o hay una mejor manera?
object-oriented
class-design
Fuzz suave
fuente
fuente
Respuestas:
No, si las dos clases son tan diferentes que solo comparten una función, lo más probable es que no sean intercambiables y, por lo tanto, romperían el principio de subesición de Liskov .
Solo se deriva de una clase base si es lógico hacerlo. Compartir una sola pieza de código rara vez es una justificación para la herencia :)
En este ejemplo en particular, parece que desea reutilizar esa función a través de la composición ...
fuente
Si una descripción de clase contiene la palabra " y ", debe dividirse en dos (o más) clases. Por lo que parece, podría hacer que esa función sea miembro de otra clase a la que hacen referencia las que tiene actualmente.
fuente