Ir al contenido

I — Interface Segregation Principle

“Es mejor tener muchas interfaces pequeñas y específicas que una gran interfaz general.”

No obligues a un componente a implementar métodos que no necesita.

interface IPlano {
nombre: string;
fechaCreacion: Date;
pistas: Pista[];
pistaActiva: number;
renderizarOndas(): void;
exportarMP3(): void;
}
// HeaderPlano necesita nombre y fecha, pero está forzado a implementar TODO
interface IDatosBasicosPlano {
nombre: string;
fechaCreacion: Date;
}
interface IPista {
pistas: Pista[];
pistaActiva: number;
}
interface IRenderizable {
renderizarOndas(): void;
exportarMP3(): void;
}
// HeaderPlano solo recibe lo que necesita
class HeaderPlano {
constructor(private datos: IDatosBasicosPlano) {}
}