Saltar al contenido

La diferencia entre el principio de sustitución de liskov y el principio de segregación de interfaz

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ón callBaba() que obtiene el número de teléfono de tu padre y luego lo llama, así que debes asegurarte de que el callBaba() método en todas las subclases del Device hace el mismo trabajo. si alguna de las subclases de Device tener otro comportamiento dentro callBaba() 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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *