Volver a aprender patrones de diseño (cuatro, resumen de patrones de diseño)

1. Resumen de patrones de diseño

    Hasta el momento, hemos completado el estudio de 23 patrones de diseño, y es necesario hacer un resumen al final.

    El patrón de diseño no es una tecnología específica, cuenta la idea de resolver problemas , es un conjunto de soluciones para mejorar la reutilización, el mantenimiento, la legibilidad, la robustez y la seguridad del código, y es una comprensión y aplicación completas de la encapsulación de clases , la herencia y el polimorfismo, así como las relaciones de composición y asociación de clases .

    Existe un concepto en ingeniería de software llamado alta cohesión y bajo acoplamiento , que es uno de los criterios para juzgar la calidad de un diseño de software.

   Cohesión alta : la cohesión tiene como objetivo el diseño interno del módulo y se refiere al grado en que los elementos de un módulo de software se combinan entre sí.Cohesión alta significa que los elementos de un módulo están estrechamente combinados entre sí. En pocas palabras, es si un módulo está compuesto por código altamente correlacionado, sin redundancia y lógica demasiado complicada, y solo es responsable de una tarea, lo que a menudo se dice que se ajusta al principio de responsabilidad única.

    Acoplamiento bajo : el acoplamiento se refiere a la complejidad de la interacción entre módulos (o clases) y módulos (o clases). El grado de acoplamiento entre módulos depende de la complejidad de la interfaz entre módulos, la forma de llamar y la transmisión de información. Cuanta menos información se transmita, menor será el grado de acoplamiento.

    La alta cohesión y el bajo acoplamiento pueden garantizar la independencia de los servicios y la flexibilidad del sistema. Por lo tanto, la idea central de nuestros patrones de diseño de aprendizaje coincide con it-decoupling (reducir diseños que pueden aumentar el acoplamiento).

    Tanto el front-end como el back-end tienden a dividirse en componentes, e incluso los microservicios han nacido en la arquitectura de la aplicación, y las ideas de la división en componentes y los microservicios son la encarnación de alta cohesión y bajo acoplamiento.

    La idea central de nuestros patrones de diseño de aprendizaje es el desacoplamiento , no eliminar el acoplamiento, sino controlar el acoplamiento dentro de un cierto rango, encontrar puntos estables y puntos cambiantes, y usar la abstracción para aislar los puntos cambiantes. Primero satisfaga los principios de diseño y luego repita los patrones de diseño .

    De hecho, todos los patrones de diseño tienen algo en común (en java, es la aplicación integral de abstracción, herencia, polimorfismo y combinación) Algunos de ellos se ven muy similares pero pueden resolver problemas diferentes.

Descargo de responsabilidad: ¡Los artículos originales no se pueden reproducir sin permiso! ! !

1.1 Resumen de los principios de diseño

en principio definición Objetivo solicitud
Principio de Responsabilidad Única - SRP Una clase debe tener una y solo una razón para su cambio, de lo contrario, la clase debe dividirse Desacoplamiento funcional Por ejemplo: divida la información del usuario en clases de atributos e interfaces de comportamiento, y un Dao representa una tabla
Principio Abierto-Cerrado-OCP Una entidad de software (como una clase, módulo, función, etc.) debe estar abierta para la extensión y cerrada para la modificación. Reducir el riesgo de mantenimiento
Principio de sustitución de Liskov - LSP La herencia debe garantizar que las propiedades de la superclase aún se mantengan en la subclase. evitar inundaciones de herencia Por ejemplo: el método add() en la clase padre es reescrito por la subclase como la función resta()-resta, por lo que no hay necesidad de usar la relación de herencia
Principio de segregación de interfaz - ISP Una interfaz solo hace una cosa, la interfaz debe ser delgada pero no gruesa Desacoplamiento funcional
Principio de inversión de dependencia - DIP Programa a la interfaz, no a la implementación. Desacoplamiento de módulos funcionales Por ejemplo, la aplicación de la idea de inversión de control (inyección de dependencia) generalmente incluye inyección de construcción, inyección de conjuntos o inyección de anotaciones. Debido a que es una interfaz, se pueden pasar diferentes clases de implementación, por lo que la inyección tiene sentido.
Ley de Deméter-LOD No sepa lo que no debe saber, reduzca el acoplamiento y la complejidad Desacoplamiento funcional Por ejemplo: el modo de apariencia y el modo intermediario son sus aplicaciones
Principio de Reutilización Sintética - CRP Use la composición de objetos primero para lograr la reutilización del código, seguido de la herencia Reducir el acoplamiento de código

    Enlace detallado al artículo: Reaprendizaje de patrones de diseño (principios de diseño)_Blog de Mu Jinxuan

1.2 Resumen de patrones de diseño

1.2.1 Patrones de diseño creacional

modelo definición Objetivo solicitud enlace del artículo
Patrón único Una clase tiene solo una instancia, al tiempo que proporciona un punto de acceso global a esa instancia Garantice la exclusividad global y ahorre memoria Información de configuración y conflictos de acceso a recursos de los principales sistemas de aplicación, tales como: ServletContext de tomcat, inyección predeterminada de Spring, registro, grupo de subprocesos, etc.; Volver a aprender patrones de diseño (patrones Singleton)
Patrón de prototipo Crear nuevos objetos copiando prototipos Crear objetos de manera eficiente Use la clonación cuando cree un objeto complejo o que consuma muchos recursos para evitar la creación repetida; hay dos formas de crear beans en Spring: modo singleton y modo prototipo; Volver a aprender patrones de diseño (patrones de prototipo)
Patrón de fábrica Crear diferentes instancias bajo diferentes condiciones Encapsular lógica de creación compleja Gestión unificada, retrasando la creación de instancias de objetos, tales como: BeanFactory, DocumentBuilderFactory cuando se analiza XML; Volver a aprender patrones de diseño (patrones de fábrica)
Patrón de constructor Transferir la lógica de construcción de la clase al exterior de la instanciación de la clase para lograr Separar la construcción compleja de la presentación El método de adición de StringBuilder, PreparedStatement en SQL, DomBuilder y SAXBuilder en JDOM; Volver a aprender patrones de diseño (patrones de construcción)

1.2.2 Patrón de diseño estructural

modelo definición Objetivo solicitud enlace del artículo
Patrón de adaptador Permitir que los objetos con interfaces incompatibles cooperen conversión compatible Por ejemplo: actualización del sistema antiguo: java.io.InputStreamReader(InputStream java.io.OutputStreamReader(OutputStream) Vuelva a aprender el patrón de diseño (patrón de adaptador)
Patrón de representación Proporciona un proxy para que otros objetos controlen el acceso a este objeto. Responsabilidades mejoradas Proxy dinámico automático JDK: implementación de interceptores en java.lang.reflect.Proxy struts2 y mybatis, implementación de AOP en Spring; Volver a aprender el patrón de diseño (patrón de proxy)
Patrón de puente Separe la abstracción de la implementación para que puedan variar de forma independiente Desvincular la abstracción de la implementación controlador JDBC, clasificación de registro; Volver a aprender patrones de diseño (patrón de puente)
Patrón compuesto¶ Garantizar la consistencia del cliente con un solo objeto y un objeto compuesto unidad de todo y parte El contenedor en la GUI, la estructura organizativa del sistema OA; Volver a aprender patrones de diseño (patrones compuestos)
Patrón de fachada Proporcione un punto de entrada unificado para múltiples subsistemas complejos Simplifique las llamadas de los clientes Clases de herramientas proporcionadas por Hibernate, clases de herramientas Spring JDBC; Volver a aprender patrones de diseño (patrones de apariencia)
Patrón decorador La función de agregar/modificar objetos en tiempo de ejecución es más flexible que generar subclases Funciones mejoradas Diseño de flujo IO en java, Diseño de objeto de solicitud en servlet; Volver a aprender patrones de diseño (patrones de decorador)
Patrón de peso mosca Caché de objetos compartiendo para reducir el consumo de memoria Optimizar la asignación de recursos Grupo de subprocesos, grupo de conexión de base de datos, diseño de clase de cadena; Reaprendizaje de patrones de diseño (patrón de peso mosca)

1.2.3, patrón de diseño de comportamiento

modelo definición Objetivo solicitud enlace del artículo
Patrón de plantilla Implementar un algoritmo en un método y diferir la definición de ciertos pasos en el algoritmo, permitiendo que otras clases los redefinan Multiplexación lógica Proporcione puntos de extensión para algunas clases de procesos fijos; llamada doGet/doPost en javax.servlet.http.HttpServlet Volver a aprender patrones de diseño (patrón de método de plantilla)
Patrón de estrategia Algoritmo de separación, elija implementación transferencia de opciones Gestión de diseño en GUI (por ejemplo: se puede seleccionar diseño de flujo, diseño de cuadrícula, etc.) Estrategia de acceso a recursos de la interfaz de recursos en Spring; Volver a aprender patrones de diseño (patrones de estrategia)
Patrón de comando La separación de la solicitud y la responsabilidad de ejecutar la solicitud facilita la gestión del almacenamiento, la transferencia y la invocación de la solicitud. Solicitudes de desacoplamiento y procesamiento mecanismo de procesamiento de transacciones de base de datos, comando de deshacer y recuperación; Volver a aprender patrones de diseño (patrones de comando)
Patrón de cadena de responsabilidad Un objeto independiente que convierte comportamientos específicos en controladores Desacoplamiento del remitente y el receptor de las solicitudes Mecanismo de manejo de excepciones en java (try-catch), procesamiento en cadena de filtros en Servlet, mecanismo de burbujeo y captura de eventos en javaScript; Volver a aprender patrones de diseño (patrón de cadena de responsabilidad)
Patrón de estado Distribuir la lógica que representa el estado de un objeto en diferentes clases que representan el estado Estado vinculante y comportamiento Cambiar el estado del objeto del subproceso javax.faces.lifecycle.LifeCycle#execute() Volver a aprender patrones de diseño (patrones de estado)
Patrón de observador Resuelve principalmente el problema de que existe una relación de dependencia de uno a muchos entre varios objetos, y cuando un objeto cambia de estado, notifica a otros objetos. Desacoplando el observador y lo observado Observadores proporcionados en JDK java.util.Observer/java.util.Observable;java.util.EventListener; Volver a aprender patrones de diseño (patrón de observador)
Patrón mediador Gestión unificada de objetos (un gran número de relaciones de muchos a muchos) a través del intermediario, y la interacción entre objetos se encapsula en el objeto del intermediario Reducir el acoplamiento entre objetos Controlador C en patrón MVC, con MV conectado; java.util.Timer; java.lang.reflect.Method#invoke() Volver a aprender patrones de diseño (Patrón Meditor)
Patrón de iterador Proporciona una forma de acceder a los elementos de un objeto agregado sin exponer su representación subyacente Acceso unificado a las colecciones El contenedor de colección incorporado de JDK usa iteración Volver a aprender patrones de diseño (patrones de iterador)
Patrón de visitante Estabilice las estructuras de datos y defina nuevos comportamientos operativos Desacoplamiento de estructuras de datos y operaciones de datos Puede actuar como interceptor java.nio.file.FileVisitor-SimpleFileVisitor; Volver a aprender patrones de diseño (patrón de visitante)
Patrón de recuerdo Guarde el estado del objeto y restáurelo cuando sea necesario copia de seguridad de restauracion La operación de reversión de la transacción, el registro de la historia en Photoshop; Volver a aprender patrones de diseño (patrón de notas)
Patrón de intérprete Dado un idioma, defina su representación gramatical y defina un intérprete que use este identificador para interpretar oraciones en el idioma Implementar un análisis de sintaxis específico Expresiones regulares, expresiones EL, expresiones matemáticas, algunas reglas de análisis personalizadas; Volver a aprender patrones de diseño (patrones de intérprete)

Supongo que te gusta

Origin blog.csdn.net/xiaoxianer321/article/details/125573114
Recomendado
Clasificación