Interface Segregation Principle(ISP)

  • RSS
  • Add To My MSN
  • Add To Windows Live
  • Add To My Yahoo
  • Add To Google
Posted by Ehudes Garcia Monday, February 06, 2012 8:23:00 PM Categories: Arquitectura de Software Clean Code Diseño de software Ingeniería de Software Metodologías ágiles Pruebas de software

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.

Comments

Comments are closed on this post.