Revisamos cada escrito de nuestra página web con la meta de enseñarte en todo momento información veraz y actual.
Solución:
LSP: El síndico debe honrar los contratos que promete.
ISP: La persona que llama no debe depender de la interfaz del receptor más de lo que necesita.
Dónde encajan: si aplica el ISP, solo usa una parte de la interfaz completa del receptor. Pero según LSP, el receptor aún debe cumplir con esa porción.
Si no aplica el ISP, puede existir la tentación de violar el LSP. Porque “este método no importa, en realidad no se llamará”.
Ambos son principios SÓLIDOS
- LSP (sustitución de Liskov): este principio le pide que se asegure de que todas las clases secundarias tengan el mismo comportamiento que la clase principal. por ejemplo: si tienes un
Device
clase y tiene funcióncallBaba()
que obtiene el número de teléfono de tu padre y luego lo llama, así que debes asegurarte de que elcallBaba()
método en todas las subclases delDevice
hace el mismo trabajo. si alguna de las subclases deDevice
tener otro comportamiento dentrocallBaba()
esto significa que rompiste el LSP
Ejemplo de código que rompe el Principio de Liskov.
class Device
func callBaba()
print("I will find your father and I will call him")
class Calculator: Device
override func callBaba()
print("Sorry, I don't have this functionality ")
La solución
interface CanCall
func callBaba()
class Device
// all basic shared functions here.
class Calculator: Device
// all functions that calculator can do + Device
class SmartPhone: Device implements CanCall
// all smartphone stuff
func callBaba()
print("I will find your father and I will call him")
- ISP (segregación de interfaz): le pide que cree una interfaz diferente para diferentes responsabilidades, en otras palabras, no agrupe comportamientos no relacionados en una interfaz. Rompe el ISP si ya tiene una interfaz con muchas responsabilidades y el implementador no. necesito todas estas cosas
esto rompe el principio ISP porque tiene dos responsabilidades diferentes
protocol Animal
func fly()
func eat()
La solución
protocol Flyable
func fly()
protocol Feedable
func eat()
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)