Siete principios de diseño de arquitectura de software

Notas de estudio de "Principios básicos de primavera"

consejos: principios básicos del patrón de diseño de primavera

1. Siete principios de diseño de arquitectura de software

1. Principio Abierto Cerrado OCP

  • Contenido: abierto a expansión , cerrado a modificación
  • Por ejemplo: el diagrama de clase se muestra a continuación, cree una interfaz de curso ICourse, diferentes cursos crean diferentes clases de JavaCourse para implementar la interfaz, si hay una reducción de precio del curso, no modifique el método getPrice en la clase original, pero vuelva a extender la nueva clase JavaDiscountCouse herede esta clase y vuelva a escribir Método de precio getPrice. Este método viola el Principio de sustitución de Liskov, por lo que la mejor manera es reescribir un método getDiscountPrice.
    Inserte la descripción de la imagen aquí

2. Principio de inversión de dependencia (DIP)

  • Contenido:
    • El programa depende de la interfaz abstracta , no de la implementación concreta . En pocas palabras, requiere programación abstracta , no programación , lo que reduce el acoplamiento entre el cliente y el módulo de implementación. (Los métodos públicos y las abstracciones que no dependen de implementaciones específicas son clases estáticas, y los métodos públicos y las abstracciones que dependen de implementaciones específicas son clases de interfaz)
    • La inyección de dependencia con Spring es un significado
  • Ejemplo: el diagrama de clase se muestra a continuación. Crear una interfaz de curso ICourse. Diferentes cursos implementan la interfaz ICourse. La clase Tom puede llamar a diferentes clases de implementación de curso mediante inyección de dependencia (los tres métodos de inyección de dependencia: paso de parámetros, constructor y método de establecimiento)
    Inserte la descripción de la imagen aquí

3. El principio de responsabilidad única (SRP)

  • Contenido: no hay más de una causa de cambio de clase. Es decir, si una clase es responsable de diferentes responsabilidades, las diferentes responsabilidades se dividen en diferentes clases.
  • Nota: Durante el uso del principio único, no es fácil de implementar y no puede garantizar que todas las clases o métodos sean una sola función, pero debemos hacer todo lo posible para garantizar que pueda reducir el costo de la operación y mantenimiento posteriores. Al mismo tiempo, en el modelo DAO, por qué hay cuatro métodos diferentes para una clase (adición, eliminación y modificación), porque las operaciones básicas de DAO son estos cuatro, por lo que no es necesario dividir los diferentes métodos (es decir, no es necesario realizar el código que no debe cambiarse en el período posterior) Split)

4. Principio de segregación de interfaz (ISP)

  • Contenido: utilice múltiples interfaces dedicadas en lugar de una única interfaz de resumen, es decir, la clase no necesita implementar las interfaces que no necesita.
  • Por ejemplo: la comparación del diagrama de clase se muestra a continuación. La interfaz animal IAnimal tiene tres interfaces: comer, correr, volar y nadar. Todos tienen un método común es comer, pero los tres animales diferentes de tierra, mar y aire tienen diferentes métodos de movimiento, por lo que no se pueden definir. La interfaz unificada debe estar dividida.
    Inserte la descripción de la imagen aquí

5. Ley de Demeter (Lod)

Contenido: Un objeto debe mantener una comprensión mínima de otros objetos, también conocido como Principio de Menos Conocimiento (LKP), enfatizando que solo se comunica con amigos , no con extraños . Los amigos son clases en variables miembro, parámetros de entrada y salida de métodos .
Por ejemplo: la comparación del diagrama de clases es la siguiente: el jefe Boss necesita verificar la cantidad de cursos del curso publicados, por lo que quiero que TeamLeader cuente, TeamLeader le dice el resultado al jefe, Boss no necesita conocer la información del curso, sus parámetros de método solo necesitan pasar TeamLeader, así que TeamLeader es un amigo y no un amigo del curso, por lo que debe evitar introducir la clase del curso dentro del método. Los parámetros del método de TeamLeader incluyen Course, por lo que son amigos de Course, por lo que la información del curso debe crearse y colocarse en TeamLeader. El primer método es crear información del curso en Boss y pasarla a TeamLeader. Este método no se ajusta al principio Dimit.
Inserte la descripción de la imagen aquí

6. Principio de sustitución de Liskow (LSP)

  • Contenido:

    • Ventajas de herencia:
      • Mejore la reutilización del código, las subclases tienen métodos y propiedades de la clase primaria;
      • Mejore la escalabilidad del código, la subclase puede ser similar a la clase padre, pero diferente de la clase padre, conservando las características de sí mismo;
    • Desventajas de herencia:
      • Intrusividad: la herencia es invasiva, siempre que la herencia tenga todos los métodos y propiedades de la clase padre;
      • No lo suficientemente flexible: las subclases están restringidas en cierta medida, lo que reduce la flexibilidad del código;
      • Acoplamiento alto: acoplamiento aumentado, cuando se modifican las constantes, las variables o los métodos de la clase principal, se debe considerar la modificación de la subclase, por lo que una vez que la clase principal ha cambiado, puede causar muy malos resultados y se debe refactorizar mucho código .
  • Principio: La piedra angular de la herencia y la reutilización, solo cuando la clase derivada puede reemplazar a la clase base, la función no se ve afectada, es decir, la clase base no se ve afectada por ningún cambio en la subclase, entonces la clase base puede realmente reutilizarse.

  • Métodos específicos (para garantizar que la subclase reemplaza los resultados del código de la clase principal son consistentes):

    • Las subclases deben implementar los métodos abstractos de la clase primaria , pero no deben anular los métodos no abstractos (implementados) de la clase primaria .
    • Puede agregar sus propios métodos únicos en subclases .
  • Cuando la subclase anula el método de la superclase, las condiciones previas del método (es decir, los parámetros formales del método) son más relajadas que los parámetros de entrada del método de la superclase .

  • Cuando una clase secundaria anula un método principal o implementa un método abstracto de la clase principal **, las condiciones posteriores del método (es decir, el valor de retorno del método) son más estrictas que la clase principal **.

7. Principio de reutilización de compuesto / agregado (CARP)

Contenido: intente utilizar la composición de objetos (has-a) / agregación (contiene-a) en lugar de la herencia para reducir el acoplamiento entre clases.

10 artículos originales publicados · Me gusta2 · Visitas 1925

Supongo que te gusta

Origin blog.csdn.net/yuhao22/article/details/105619370
Recomendado
Clasificación