Principio de sustitución de Liskov (LSP)

La tercera letra del acrónimo S.O.L.I.D., representa al Principio de sustitución de Liskov (LSP). Establece que "Las funciones que usan punteros o referencias a clases base, deben ser capaces de utilizar objetos o clases derivadas sin necesidad de saberlo". Esto significa que cuando nuestro código usa una clase específica (o una interfaz), éste debería ser capaz de usar otra clase que herede de la específica (o diferentes implementaciones de la interfaz) sin tener que cambiar su comportamiento interno.
Esto, nuevamente, es para minimizar el impacto de los cambios que puedan haber sobre nuestro código.
Los problemas que resuelve LSP casi siempre son fácilmente evitables. Hay algunos habituales signos reveladores de que una violación a LSP aparece en el código. He aquí un escenario que muestra cómo puede ocurrir una violación a LSP.

Si miramos la clase PrioridadOrden, veremos como la misma viola éste principio porque cuando un cliente de la clase Orden chequea la propiedad EsValida, espera un retorno de tipo bool.

Pero cuando en lugar de tener un instancia de Orden, el cliente tiene una instancia de PrioridadOrden, súbitamente el cliente necesita capturar una posible excepción (try-catch) que se lanza cuando la orden no es válida.

De pronto, el cliente necesita conocer con qué tipo de clase específica esta tratando, lo que representa una clara violación al principio de sustitución de Liskov.
Este principio fue introducido inicialmente como comportamiento por Barbara Liskov en un discurso en una conferencia de 1987 titulada: Abstracción de datos y jerarquía.

0 comentarios:

Publicar un comentario

Muchas gracias por leer el post y comentarlo.

 
Copyright 2009 Programación SOLIDa
BloggerTheme by BloggerThemes | Design by 9thsphere