El Principio de Segregación de Interfaces (ISP) se centra en la idea de dividir las interfaces en conjuntos coherentes de métodos, de modo que las clases que implementan esas interfaces no se vean obligadas a proporcionar funcionalidad que no necesitan. Por ejemplo, en un sistema de clases para aves, algunas aves pueden volar, mientras que otras pueden correr pero no volar. Aplicando el ISP, cada tipo de ave tendría una interfaz específica que incluiría solo los métodos pertinentes para su comportamiento, como «volar» para aves que pueden volar y «correr» para aves que pueden correr. Esto permite una mejor modularidad y flexibilidad en el diseño del sistema, evitando la imposición de métodos no utilizados y facilitando la adición de nuevos tipos de aves en el futuro sin afectar la estructura existente.
Esta descripción aclara cómo el ISP se aplica en el contexto de las aves y cómo ayuda a mantener una interfaz coherente y específica para cada tipo de ave, mejorando así la modularidad y la flexibilidad del diseño del sistema.
interface Bird {
eat(): void;
}
interface FlyingBird {
fly(): number;
}
interface RunningBird {
run(): void;
}
interface SwimmerBird {
swim(): void;
}
class Tucan implements Bird, FlyingBird {
public fly() { return 100; }
public eat() {}
}
class Humminbird implements Bird, FlyingBird {
public fly() { return 200; }
public eat() {}
}
class Ostrich implements Bird, RunningBird {
public eat() {}
public run() {}
}
class Penguin implements Bird, SwimmerBird {
public eat() {}
public swim() {}
}