Composición y herencia en la implementación de hotspots con plantillas y ganchos
Recapitulando
Resumen de lo que vimos:
- Las plantillas y los ganchos se pueden utilizar en un framework para separar lo que se mantiene constante (frozenspot) de lo que varía (hotspots).
- Las plantillas implementan lo que se mantiene constante, los ganchos lo que varía.
- Se puede utilizar herencia o composición para separar la plantilla de los ganchos.
- Si uso herencia, la plantilla se implementa en una clase abstracta y los ganchos en sus subclases (como el clásico patron Método Plantilla). Si uso composición, un objeto implementa la plantilla y delega la implementación de los ganchos en sus partes.
- Con herencia:
- es mas simple para casos con pocas alternativas y/o pocas combinaciones
- al implementar los métodos gancho puedo utilizar las variables de instancia y todo el comportamiento heredado de la clase abstracta
- si hay muchas variantes o combinaciones, empiezo a tener muchas clases y duplicación de código
- Con composición:
- evita la duplicación de código y el creciente numero de clases cuando existen muchas alternativas y combinaciones posibles
- al implementar los métodos gancho debo pasar como parámetro todo lo que necesiten - no tienen acceso a las variables de instancia del objeto
- puedo cambiar el comportamiento en tiempo de ejecución sin mayor dificultad
Obra publicada con Licencia Creative Commons Reconocimiento Compartir igual 4.0