inheritance - patrones - tipos de herencia pdf
Diferentes tipos de herencia en el mismo esquema (1)
Estoy usando Doctrine 1.2 en un proyecto de Symfony, y estoy considerando mezclar tipos de herencia concretos y de agregación de columnas en mi esquema: la agregación de columnas me permite consultar en una tabla padre y obtener registros padre e hijo, mientras que la herencia concreta me permite obtener un esquema más limpio. Además, la mezcla estará en la misma cadena de herencia. ¿Cómo escribiría el archivo de esquema? Como el siguiente?
A:
B:
inheritance:
extends: A
type: concrete
C:
inheritance:
extends: B
type: column_aggregation
keyField: type
keyValue: 1
O como esto tal vez:
A:
B:
inheritance:
extends: A
type: concrete
C:
inheritance:
extends: B
type: concrete
D:
inheritance:
extends: C
type: column_aggregation
keyField: type
keyValue: 1
E:
inheritance:
extends: C
type: column_aggregation
keyField: type
keyValue: 2
¿Hay algún peligro / advertencia?
Mientras evites la herencia circular o la herencia en forma de diamante, estarás bien y puedes usar esto.
Una herencia circular (obviamente se ve de la siguiente manera
Clase A Extiende B Clase B Extiende A
O
LA CLASE A SE EXTIENDE C
LA CLASE B SE EXTIENDE A
LA CLASE C SE EXTIENDE A
Una herencia en forma de diamante es un poco más redonda. Sucede cuando ocurre el siguiente tipo de condición
CLASE A
LA CLASE B SE EXTIENDE A
LA CLASE C SE EXTIENDE A
LA CLASE D SE EXTIENDE B, C