interface GeneradorReportes {
fun generarCabecera(): String
fun generarCuerpo(datos: String): String
fun generarPie(): String
fun formatearFecha(fecha: String): String
fun exportar(contenido: String): ByteArray
}
5 funciones para reimplementar
class ReportePersonalizado(private val reporteBase: GeneradorReportes) : GeneradorReportes {
// Solo queremos cambiar el formato de fecha
override fun formatearFecha(fecha: String): String {
return "Fecha: $fecha" // Cambio real
}
// Pero debemos reimplementar TODO lo demás
override fun generarCabecera() = reporteBase.generarCabecera()
override fun generarCuerpo(datos: String) = reporteBase.generarCuerpo(datos)
override fun generarPie() = reporteBase.generarPie()
override fun exportar(contenido: String) = reporteBase.exportar(contenido)
}
Mismo código en múltiples clases
Cambios manuales en cada lugar