2010-06-01 17 views
5

Tiene una clase, que se ajusta perfectamente para ser un resumen, pero esta clase no puede funcionar normalmente sin datos proporcionados por la clase derivada. No es conveniente pasar todos los datos al constructor porque no todos pueden ser necesarios, y muchos de ellos pueden ser dinámicos (resultado de la función secundaria).¿Cuál es una práctica común de completar la clase abstracta?

¿Cuáles son las mejores prácticas para componer dicha estructura? ¿O es un mal diseño en primer lugar?

  1. ¿Declarar funciones abstractas, que el niño debe implementar?
  2. ¿Declarar funciones normales, que se anulan en la clase infantil?

Respuesta

1

Si hay un comportamiento predeterminado razonable de la función que se puede confiar en la mayoría de los niños, se puede implementar como uno normal. De lo contrario (no existe un comportamiento predeterminado y/o la mayoría de los niños tienen que anularlo), es mejor declararlo como abstracto. El efecto secundario es que nunca se olvida de definirlo en una clase secundaria porque no se informará de inmediato al no hacerlo.

La otra oportunidad es el uso de contenedores (por ejemplo, matrices) para los datos que son específicos de las clases secundarias, pero todavía están sujetos a comprobaciones generales u otros procesos que se pueden realizar en el antecesor común. De esta manera se define una variable que contiene los datos, pero los datos se completan en los elementos secundarios. El código en la clase padre puede iterar sobre este contenedor y hacer un trabajo de rutina en todos los elementos.

+0

Buena respuesta, gracias. –

Cuestiones relacionadas