Esta es la cuarta entrega de una saga para explicar los principios SOLID.
Interface, Interfase e Interfaz, una pequeña aclaración.
Interface: Palabra inglesa que en el campo de la computación se refiere a una herramienta o concepto que es un punto de interacción entre dos componentes y es aplicable tanto al hardaware como al software.
Interfaz: Traducción correcta al español de la palabra inglesa Interface, el plural de interfaz es interfaces.
Interfase: Termino biológico, A veces se confunde con la palabra interfaz, por una incorrecta traducción del inglés interface.
Interfaces en Programación Orientada a Objetos(POO)
Para los que no conocen muy bien el concecpto de interfaces en POO ver este link.
Ahora si el ISP
POO es todo a cerca de que un objeto encapsule una funcionalidad, una funcionalidad bien definida y que la haga bien, básicamente cumplir con el Single Responsibility Principle(SRP), por eso cuando se deben implementar interfaces con demasiados métodos(fat interfaces), existe el riesgo de violar el principio SRP, el ISP básicamente promueve interfaces con alta cohesión, con pocos métodos, para que las clases que las implementen por ende también tengan alta cohesión y estén alienadas con el SRP.
Cuando este principio es violado, se logran sistemas altamente acoplados y con baja cohesión, por ejemplo, cuando se define una interfaz con n operaciones para el CRUD de una entidad, se mezclan dos conceptos el de consulta(Read) y el de escritura(Create, Update y Delete), obligando a la clase que implemente esta interfaz a mezclar el concepto de consulta y el de escritura, lo mas recomendado serìa una interfaz para las operaciones de escritura y otra interfaz para las operaciones de consulta, logrando una mejor granularidad y separación de conceptos, asi los clientes que consuman las clases que respectivamente implemente estas interfaces sólo invocaran operaciones alineadas con su contexto ya sea de lectura o escritura.
Fuentes
http://en.wikipedia.org/wiki/Interface_segregation_principle
http://danielmazzini.blogspot.com/2011/04/interface-segregation-principle-o.html
Happy Coding
The Clean Coder, Because small things matter.