error_outline

Sistema de Reportes: Sin Delegación

Interface con Múltiples Funciones

description

GeneradorReportes

interface GeneradorReportes {
    fun generarCabecera(): String
    fun generarCuerpo(datos: String): String
    fun generarPie(): String
    fun formatearFecha(fecha: String): String
    fun exportar(contenido: String): ByteArray
}
warning

5 funciones para reimplementar

Clase Sin Delegación - Mucho Código

content_copy

ReportePersonalizado - Código Repetitivo

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)
}
close Duplicación

Mismo código en múltiples clases

close Propenso a errores

Cambios manuales en cada lugar