Cómo entender el principio de sustitución de Liskov
Principio de sustitución de Liskov (LSP): Todos los lugares que hacen referencia a una clase base (clase padre) deben poder utilizar de forma transparente objetos de sus subclases
Principio de sustitución de Liskov (LSP) El reemplazo El principio nos dice que si un objeto de clase base se reemplaza con su objeto de subclase en el software, el programa no generará ningún error o excepción. Lo contrario no es cierto. Si una entidad de software usa un objeto de subclase, entonces no es necesariamente posible. utilizar objetos de clase base. Por ejemplo: me gustan los animales, entonces me deben gustar los perros, porque los perros son una subcategoría de animales, pero me gustan los perros, pero no se puede concluir que me gustan los animales, porque no me gustan los ratones, aunque también son animales.
Por ejemplo, si hay dos clases, una es BaseClass y la otra es SubClass, y la clase SubClass es una subclase de la clase BaseClass, entonces si un método puede aceptar un objeto de clase base base de la Tipo BaseClass, por ejemplo: método1 (base), entonces debe poder aceptar un objeto de subclase sub de tipo BaseClass, y el método1 (sub) puede ejecutarse normalmente. La sustitución inversa no se cumple. Por ejemplo, si un método método2 acepta un objeto de subclase de tipo BaseClass como parámetro: método2(sub), entonces, en términos generales, no puede haber método2(base) a menos que sea un método sobrecargado.
El principio de sustitución de Liskov es una de las formas importantes de implementar el principio de apertura y cierre. Dado que los objetos de subclase se pueden usar dondequiera que se usen objetos de clase base, intente usar tipos de clase base para modificar objetos en el programa. Definición, y luego determine su tipo de subclase en tiempo de ejecución y reemplace el objeto de la clase principal con el objeto de la subclase.
Al utilizar el principio de sustitución de Liskov, debe prestar atención a las siguientes cuestiones:
(1) Todos los métodos de la subclase deben declararse en la clase principal o en la subclase. debe implementar la clase principal Todos los métodos declarados en la clase. De acuerdo con el principio de sustitución de Liskov, para garantizar la escalabilidad del sistema, la clase principal generalmente se usa para la definición en el programa. Si un método solo existe en la subclase y no se proporciona una declaración correspondiente en la clase principal, no puede. definirse en la clase principal. Utilice este método en el objeto definido.
(2) Cuando aplicamos el principio de sustitución de Liskov, intentamos diseñar la clase principal como una clase o interfaz abstracta, dejar que la subclase herede la clase principal o implementar la interfaz principal e implementar las funciones declaradas. en el método de la clase principal, en tiempo de ejecución, la instancia de la subclase reemplaza a la instancia de la clase principal. Podemos extender fácilmente las funciones del sistema sin modificar el código de la subclase original. Se puede agregar nuevas funciones agregando una nueva subclase. El principio de sustitución de Liskov es uno de los métodos de implementación específicos del principio de apertura y cierre.
(3) En el lenguaje Java, durante la fase de compilación, el compilador de Java verificará si un programa cumple con el principio de sustitución de Liskov. Esta es una verificación puramente gramatical que no tiene nada que ver con la implementación, pero. Java Las comprobaciones del compilador son limitadas.