El Interface Segregation Principle (ISP) o Principio de Segregación de Interfaces establece que “ningún cliente debería verse forzado a depender de métodos que no utiliza”.
En términos más simples, el ISP sugiere que en lugar de tener una interfaz grande que todos los clientes deben implementar, es mejor tener varias interfaces pequeñas específicas para cada cliente.
Segregación: Dividir interfaces grandes en más pequeñas y específicas.
Dependencia: Los clientes solo deben conocer las partes que realmente necesitan y usan.
El Interface Segregation Principle apunta a reducir las dependencias innecesarias entre los clientes y las abstracciones, lo que lleva a sistemas más desacoplados y fáciles de refactorizar, cambiar y desplegar.
Flexibilidad: Menos dependencias lleva a un sistema más flexible.
Mantenibilidad: Las modificaciones son más fáciles ya que los cambios en una interfaz no afectan a clientes que no la usan.
Claridad: Las interfaces pequeñas y bien definidas son más fáciles de entender y usar correctamente.
Podemos identificar cuándo no estamos respetando el Interface Segregation Principle:
Imaginemos un sistema para gestionar trabajadores en una empresa.
Tenemos una interfaz Worker que incluye todo lo que un trabajador podría hacer.
public interface Worker {
void work();
void eat();
void takeBreak();
// … otros métodos
}
Algunos trabajadores no necesitan todos estos métodos, pero están forzados a implementarlos de todos modos.
Dividimos Worker en varias interfaces más pequeñas y específicas.
public interface Workable {
void work();
}
public interface Eatable {
void eat();
}
public interface Breakable {
void takeBreak();
}
Ahora, cada tipo de trabajador solo implementa las interfaces que corresponden a sus responsabilidades.
Al implementar el Interface Segregation Principle, aseguramos que los clientes solo dependan de las interfaces que realmente utilizan, lo que reduce el acoplamiento y mejora la cohesión del sistema.
Esto facilita cambios y mejoras, y hace que el sistema sea más comprensible y mantenible.
El Principio de Segregación de Interfaces es crucial para crear sistemas flexibles y mantenibles. Promueve la creación de interfaces pequeñas y específicas que los clientes pueden implementar sin verse sobrecargados por métodos innecesarios. Al seguir el Interface Segregation Principle, mejoramos la claridad y reducimos el riesgo de efectos secundarios no deseados ante cambios, haciendo que el sistema sea más fácil de entender, extender y modificar.