Esto se torna repetitivo, pero esto es para minimizar el impacto de los cambios que puedan haber sobre nuestro código.
En otras palabras: si tenemos una clase abstracta o una interfaz, entonces, quienes la implementen, no deben ser forzados a implementar partes (métodos o propiedades) que no les importen.
Aquí hay tres diferentes usos de la orden. Cada paso (Carrito, Caja y Proceso) no necesita o no debe tener toda la información que la orden puede proveer.
Ahora, hemos creado interfaces específicas para los pasos específicos en el proceso de la orden. La clase Orden aun se ve como la habíamos codificado, pero los distintos clientes tienen una visión completamente diferente de ella. Esto nos permite también, crear diferentes objetos, uno para cada paso implementando sólo la interfaz necesaria.
Un ejemplo más conocido es el ejemplo de transacciones de un cajero automático dado en Desarrollo de Software Ágil: principios, patrones y prácticas y también en un artículo escrito por Robert C. Martin específicamente acerca del ISP. En este ejemplo se trata de una interfaz para la interfaz de usuario de un cajero automático, que se encarga de todas las solicitudes tanto una solicitud de depósito, o una solicitud de retiro, y cómo esta interfaz tiene que ser segregada en interfaces individuales y específicas.
0 comentarios:
Publicar un comentario
Muchas gracias por leer el post y comentarlo.