¿Qué patrones de diseño existen?
1. Patrón de creación, * * *Cinco tipos: patrón de método de fábrica, fábrica abstracta, patrón singleton, patrón de constructor y patrón de prototipo.
En segundo lugar, hay siete modos estructurales: modo adaptador, modo decorador, modo agente, modo apariencia, modo puente, modo combinación y modo disfrute.
Tres. Patrones de comportamiento * * *Once tipos: patrón de estrategia, patrón de método de plantilla, patrón de observador, patrón de subpatrón iterativo, patrón de cadena de responsabilidad, patrón de comando, patrón de memorando, patrón de estado, patrón de visitante, patrón de mediador y patrón de intérprete.
1. Patrón de método de fábrica:
Defina una interfaz para crear objetos y deje que las subclases decidan qué clase crear una instancia. Los métodos de fábrica difieren la creación de instancias de una clase a sus subclases.
Un problema con el patrón de fábrica es que la creación de una clase depende de la clase de fábrica, es decir, si desea extender el programa, la clase de fábrica debe modificarse, lo que viola el principio de cierre. Entonces, desde una perspectiva de diseño, existen ciertos problemas. Esto utiliza el patrón del método de fábrica.
Cree una interfaz de fábrica y cree múltiples clases de implementación de fábrica, de modo que si necesita agregar nuevas funciones, pueda agregar directamente nuevas clases de fábrica sin modificar el código anterior.
2. Abstract Factory:
Proporciona una interfaz para crear una serie de objetos relacionados o interdependientes sin especificar sus clases específicas. La fábrica abstracta necesita crear una serie de productos, centrándose en "qué productos crear". En otras palabras, si está desarrollando, su tarea principal es dividir diferentes líneas de productos e intentar mantener consistentes las interfaces de cada línea de productos para que puedan heredar de la misma fábrica abstracta.
3. Patrón Singleton:
Singleton es un patrón de diseño común. En las aplicaciones Java, los objetos singleton pueden garantizar que solo exista una instancia de objeto en la JVM. Este modo tiene varias ventajas:
(1) Algunas clases se crean con frecuencia, lo que supone una gran sobrecarga del sistema para algunos objetos grandes.
(2) Se omite el nuevo operador, lo que reduce la frecuencia de uso de la memoria del sistema y reduce la presión del GC.
(3) Algunas clases, como el motor comercial central del intercambio, controlan el proceso comercial. Si se pudiera crear más de una clase, el sistema quedaría completamente confuso. (Por ejemplo, si un ejército está comandado por varios comandantes al mismo tiempo, definitivamente será un desastre), por lo que solo mediante el modo singleton el servidor de transacciones central puede controlar de forma independiente todo el proceso.
4. Patrón constructor:
Separar la construcción de un objeto complejo de su representación, de modo que un mismo proceso de construcción pueda crear diferentes representaciones.
5. Modo prototipo:
Aunque el modo prototipo es un modo creativo, no tiene nada que ver con el modo ingeniería. Como puede verse por el nombre, la idea de este modo es copiar y clonar un objeto como prototipo para producir un nuevo objeto que sea similar al objeto original. Este resumen se explicará copiando objetos. En Java, la copia de objetos se logra mediante clone(). Primero, cree una clase prototipo.
6. Modo adaptador:
El modo adaptador convierte la interfaz de una clase en otra representación de interfaz esperada por el cliente para eliminar los problemas de compatibilidad de clases causados por la falta de coincidencia de la interfaz. Dividido principalmente en tres categorías: modo adaptador de clase, modo adaptador de objetos y modo adaptador de interfaz.
7. Patrón de decoración:
Como sugiere el nombre, el patrón decorador consiste en agregar algunas funciones nuevas a un objeto y es dinámico. Requiere el objeto decorativo y lo decorado. objeto para implementar la misma interfaz. El objeto de decoración contiene una instancia del objeto que se está decorando.
8. Modo proxy:
El modo proxy consiste en agregar una clase de proxy para realizar algunas operaciones en el objeto original. Por ejemplo, cuando alquilamos una casa, volvemos a buscar un agente. ¿Por qué? Debido a que no tienes un conocimiento completo de las casas en esta área, espero que puedas encontrar a alguien más familiarizado con ella para que te ayude. Eso es lo que significa agencia aquí.
9. Modo de apariencia:
El modo de apariencia es para resolver las dependencias entre clases y sus familias. Al igual que Spring, la relación entre clases se puede configurar en el archivo de configuración y el patrón de apariencia coloca su relación en una clase Fachada, lo que reduce el acoplamiento entre clases.
No hay interfaces involucradas en este patrón.
10. Modo puente:
El modo puente consiste en separar las cosas de su implementación específica para que puedan cambiar de forma independiente. El propósito del puente es desacoplar la abstracción de la implementación para que se puedan cambiar de forma independiente, al igual que nuestro administrador de controladores de puente JDBC de uso común.
Cuando JDBC se conecta a la base de datos, básicamente no necesita mover mucho código, o incluso no necesita mover nada. La razón es que JDBC proporciona una interfaz unificada y cada base de datos proporciona su propia implementación. Simplemente use un programa llamado controlador de base de datos para conectarlo.
11. Modo de combinación:
El modo de combinación, a veces llamado modo parte-todo, es más conveniente cuando se trata de problemas similares a las estructuras de árbol. Escenario de uso: se combinan y operan varios objetos, que a menudo se utilizan para representar estructuras de árbol, como árboles binarios, números, etc.
12. Modo Flyweight:
El objetivo principal del metamodo compartido es realizar * * * el intercambio de objetos, es decir, * * * grupo compartido. objetos del sistema Puede reducir la sobrecarga de memoria, a menudo se usa con el modo de fábrica.
13. Modo de estrategia:
El modo de estrategia define una serie de algoritmos y encapsula cada algoritmo para que puedan reemplazarse entre sí y los cambios en el algoritmo no afectarán a los Clientes que lo utilizan. algoritmos. Es necesario diseñar una interfaz para proporcionar un método unificado para una serie de clases de implementación. Varias clases de implementación implementan la interfaz y diseñan una clase abstracta (opcional, una clase auxiliar) para proporcionar funciones auxiliares.
14. Patrón de método de plantilla:
En la clase abstracta, hay un método principal, y luego se definen 1... n métodos, que pueden ser abstractos o prácticos. Defina una clase, herede la clase abstracta, anule los métodos abstractos y llame a subclases llamando a la clase abstracta.
15. Patrón de observador:
El patrón de observador es fácil de entender y es similar a la suscripción por correo electrónico y la suscripción RSS. Cuando navegamos por algunos blogs o wikis, a menudo vemos el ícono RSS, lo que significa que después de suscribirse al artículo, se le notificará a tiempo si hay actualizaciones posteriores.
De hecho, en pocas palabras, cuando un objeto cambia, otros objetos que dependen de él serán notificados y cambiarán en consecuencia. Existe una relación de uno a muchos entre objetos.
16. Subpatrón de iterador:
Como sugiere el nombre, el patrón de iterador accede a los objetos de la colección de forma secuencial. Generalmente, muy común en colecciones. Si está familiarizado con las clases de recopilación, comprender este patrón le resultará muy fácil. Esta oración contiene dos significados: uno es el objeto que debe atravesarse, es decir, el objeto agregado, y el otro es el objeto iterador, que se utiliza para atravesar el objeto agregado.
17. Modelo de cadena de responsabilidad:
En el modelo de cadena de responsabilidad, hay múltiples objetos, cada objeto tiene una referencia al siguiente objeto, formando así una cadena, y el La solicitud se pasará a lo largo de esta cadena hasta que un objeto decida manejar la solicitud. Pero el remitente no sabe qué objeto manejará finalmente la solicitud, por lo que puede implementar un modelo de cadena de responsabilidad para ajustar dinámicamente el sistema sin ocultar al cliente.
18. Modo de comando:
El propósito del modo de comando es separar al remitente y al ejecutor del comando, y separar la solicitud y la ejecución.
19. Patrón de recuerdo:
El objetivo principal es guardar un determinado estado de un objeto para que pueda ser restaurado en el momento adecuado. Personalmente, creo que es más vívido llamarlo modo de respaldo. En términos generales, si hay varios atributos en la clase A original, A puede decidir qué atributos deben respaldarse. La clase de nota B se usa para almacenar algunos estados internos de A, y la clase C se usa para almacenar notas, que solo se pueden almacenar y no se pueden modificar.
20. Modo de estado:
El modo de estado se usa ampliamente en el desarrollo diario, especialmente al crear sitios web. A veces queremos distinguir ciertas funciones de un objeto en función de un determinado atributo, como un simple control de permisos.
21. Patrón de visitante:
El patrón de visitante separa la estructura de datos de las operaciones que actúan sobre la estructura, por lo que el conjunto de operaciones puede desarrollarse con relativa libertad. El patrón de visitante es adecuado para sistemas con estructuras de datos relativamente estables y algoritmos cambiantes. Porque el patrón de visitantes puede aumentar fácilmente la complejidad computacional del algoritmo.
Si los objetos de la estructura de datos del sistema son fáciles de cambiar y con frecuencia se agregan nuevos objetos de datos, el patrón de visitante no es adecuado.
La ventaja del patrón de visitante es que es fácil agregar operaciones, porque agregar una operación significa agregar un nuevo visitante. El patrón de visitante concentra comportamientos relacionados en un objeto de visitante y sus cambios no afectan la estructura de datos del sistema. Su desventaja es que es difícil agregar nuevas estructuras de datos.
22. Modo de mediación:
El modo de mediación también se utiliza para reducir el acoplamiento entre clases, porque si hay dependencias entre clases, no favorece la expansión y el mantenimiento de Porque mientras se modifica un objeto, también se deben modificar otros objetos relacionados.
Si usa el modo mediador, solo debe preocuparse por la relación con la clase Mediador. La relación y la programación entre clases específicas deben entregarse al Mediador, que es un poco como el rol de. el contenedor de resorte.
23. Modo de intérprete:
El modo de intérprete generalmente se utiliza principalmente para el desarrollo de compiladores en el desarrollo de programación orientada a objetos, por lo que el alcance de la aplicación es relativamente limitado.
Datos ampliados:
Presentación de tres libros sobre patrones de diseño:
1. Patrones de diseño: la base del software reutilizable orientado a objetos.
Autores: [Estados Unidos] Erich Gamma, Richard Helm, Ralph Johnson, John Vericides.
Editor: Machinery Industry Press
2. Consejos de software: Patrón de diseño.
Autor: Zheng Aqi
Editor: Electronic Industry Press
3. Patrón de diseño: implementación y expansión de ingeniería basada en C#
Autor : Wang Xiang
Editor: Electronic Industry Press
Enciclopedia Baidu-Patrón de diseño