¿Cuáles son los principales patrones de diseño de software?
1. Modo de creación:
1. Patrón de método de fábrica creado. En el patrón del método de fábrica, la creación de clases intermedias depende de la clase de fábrica. Si desea ampliar el programa, debe modificar la clase de fábrica, lo que viola el principio de apertura y cierre, por lo que aparece el patrón del método de fábrica. Solo necesita crear una interfaz de fábrica y varias clases de implementación de fábrica.
2. Abstract Factory Abstract Factory proporciona una interfaz para crear una serie de objetos relacionados o interdependientes sin especificar sus clases específicas. A diferencia del patrón de método de fábrica, el patrón de método de fábrica crea una fábrica que puede implementar múltiples objetos; la fábrica abstracta proporciona una interfaz de fábrica abstracta y define múltiples fábricas, cada una de las cuales puede producir múltiples objetos.
3.Modo singleton El modo singleton puede garantizar que una clase tenga solo una instancia y proporcione un punto de acceso global para acceder a ella. Al mismo tiempo, crea un único objeto dentro de la clase y al configurar los permisos, no es posible crear el objeto fuera de la clase. Un objeto singleton puede garantizar que solo exista una instancia de objeto en la JVM.
4. Modo constructor (Builder mode) El modo constructor separa una construcción compleja de su representación, de modo que un mismo proceso de construcción puede producir diferentes representaciones. En el programa, el constructor se utiliza para combinar algunos componentes básicos que no cambiarán para construir objetos complejos y lograr la separación.
5. Patrón de prototipo: El patrón de prototipo especifica los tipos de objetos que se crearán con instancias de prototipo y crea nuevos objetos copiando estos prototipos. De hecho, se copia una copia del objeto y se devuelve a la persona que llama. El objeto debe heredar Cloneable y anular el método de clonación. La idea del patrón prototipo es utilizar un objeto como prototipo, copiarlo, clonarlo y generar un nuevo objeto que sea similar al objeto original.
2. Modelo estructural:
1. Patrón de adaptador El patrón de adaptador es una función que permite que las clases que no pueden trabajar juntas debido a interfaces incompatibles funcionen juntas. Las interfaces están conectadas para permitirles trabajar juntas, con adaptadores que actúan como intermediarios.
2. Patrón decorador (patrón decorador): el patrón decorador agrega dinámicamente algunas responsabilidades adicionales a un objeto, agrega algunas funciones nuevas a un objeto y requiere que el objeto decorado y el objeto decorado implementen el mismo An. interfaz, el objeto decorado contiene una instancia del objeto decorado. Además de la suma dinámica, también se puede retirar dinámicamente. Para ser dinámico, no se puede lograr por herencia, porque la herencia es estática.
3. Modo proxy El modo proxy consiste en proporcionar un proxy para que otros objetos controlen el acceso a este objeto, es decir, crear una clase proxy de una clase y controlar sus funciones durante el acceso indirecto al proxy. clase.
4. Modo de apariencia El modo de apariencia proporciona una interfaz consistente para un conjunto de interfaces en un subsistema. El patrón de fachada define una interfaz de alto nivel que hace que este subsistema sea más fácil de usar.
5. Modo puente El modo puente separa la parte abstracta y la parte de implementación para que ambas puedan cambiar de forma independiente. El patrón puente consiste en desacoplar cosas de su implementación concreta para que puedan cambiar de forma independiente (de repente asociado con el patrón mvc).
6. Modo de combinación: el modo de combinación combina objetos en una estructura de árbol para representar una estructura jerárquica "parte-todo". El modo compuesto permite a los usuarios trabajar de forma coherente con objetos individuales y objetos combinados.
7. Metamodelo de disfrute: el metamodelo de disfrute utiliza * * * tecnología de disfrute para admitir de manera efectiva una gran cantidad de objetos detallados. El objetivo principal del modelo de metacompartición es lograr * * compartir objetos, es decir, * * * grupo compartido. Cuando hay muchos objetos en el sistema, se puede reducir la sobrecarga de memoria y se pueden reutilizar objetos similares existentes. Si no se encuentra ningún objeto coincidente, se puede crear un nuevo objeto, lo que puede reducir la creación de objetos, reducir la memoria del sistema y mejorar la eficiencia.
Tercero, modo de comportamiento:
1. Modo de estrategia:
El modo de estrategia define una serie de algoritmos y los encapsula uno por uno para hacerlos intercambiables. Los cambios no afectarán a los clientes que utilicen el algoritmo.
2. Patrón de método de plantilla:
El patrón de método de plantilla define el esqueleto del algoritmo en una operación y difiere algunos pasos a las subclases. Este patrón es que en una clase abstracta, hay un método principal, y luego 1... define n métodos, que pueden ser métodos abstractos o reales. Defina una clase, herede la clase abstracta, anule los métodos abstractos y llame a subclases llamando a la clase abstracta.
El método de plantilla permite a las subclases redefinir algunos pasos específicos del algoritmo sin cambiar la estructura del algoritmo y encapsular algunos pasos fijos y métodos lógicos fijos en el método de plantilla. Llame a los métodos de plantilla para completar estos pasos específicos.
3. Patrón de observador:
El patrón de observador es una relación de dependencia de uno a muchos entre objetos definidos. Cuando el estado de un objeto cambia, todos los objetos que dependen de él reciben una notificación y se actualizan automáticamente.
En otras palabras, cuando el estado de la persona observada cambie, se notificará a todos los observadores. Esta dependencia va en ambos sentidos. Cuando los usuarios navegan por algunos blogs, a menudo ven íconos RSS en las suscripciones de correo electrónico y suscripciones RSS en los buzones de correo QQ. En pocas palabras, cuando se suscriban a este artículo, notificarán a los usuarios a tiempo si hay actualizaciones posteriores. Este fenómeno es típico del modelo de observador.
4. Patrón iterador:
El patrón iterador proporciona una forma de acceder secuencialmente a los elementos de un objeto de colección sin exponer la representación interna del objeto.
En Java, el comportamiento de atravesar cada elemento en una clase agregada se separa y encapsula en un iterador. El iterador maneja la tarea transversal simplificando la clase agregada sin exponer las partes internas de la clase agregada. En el JDK que usamos con frecuencia, todas las clases también tienen estas cosas básicas.
5. Modelo de cadena de responsabilidad:
El modelo de cadena de responsabilidad consiste en evitar el acoplamiento del remitente y el receptor de la solicitud, de modo que múltiples objetos puedan recibir la solicitud y conectarse. estos objetos en una cadena y pasa la solicitud a lo largo de la cadena hasta que un objeto la maneja. Hay varios objetos, cada uno de los cuales contiene una referencia al siguiente objeto, formando así una cadena a lo largo de la cual se pasa la solicitud hasta que un objeto decide manejar la solicitud.
6. Modo comando:
El modo comando encapsula una solicitud en un objeto, de modo que el remitente puede parametrizar al cliente con diferentes solicitudes. Hay tres objetos en el patrón: llamador, receptor y comando, que realiza la separación entre solicitud y ejecución; el llamador selecciona el comando que se emitirá y el comando especifica el receptor.
7. Patrón Memento:
El patrón Memento captura el estado interno del objeto sin destruir la encapsulación y guarda el estado fuera del objeto. Cree una clase de memo para almacenar la información de la clase original; al mismo tiempo, cree una clase de almacén de memo para almacenar la clase de memo; El objetivo principal es guardar un determinado estado de un objeto para poder restaurarlo en el momento adecuado, es decir, se realiza una copia de seguridad.
8. Patrón de estado:
El patrón de estado permite que un objeto cambie su comportamiento cuando cambia su estado interno. Un objeto puede tener múltiples estados, cada uno de los cuales tiene un comportamiento específico.
9. Modo visitante:
El modo visitante separa principalmente estructuras de datos y operaciones de datos. Agregar una interfaz a la clase visitada para recibir visitantes encapsula algunas operaciones confusas. La estructura desacoplada y el algoritmo de la estructura visitada tienen una excelente escalabilidad. En términos generales, es un método para separar la estructura y el comportamiento de los datos de un objeto.
10. Modo de mediación:
El modo de mediación utiliza un objeto de mediación para encapsular una serie de interacciones de objetos. Los mediadores liberan a los objetos de tener que hacer referencia explícita entre sí, lo que les permite acoplarse débilmente y cambiar sus interacciones de forma independiente.
11. Modo intérprete:
El modo intérprete consiste en dar un idioma, definir su representación gramatical y definir un intérprete. Este intérprete utiliza esta bandera para interpretar oraciones en el idioma. Se usa básicamente en este ámbito y su rango de aplicación es relativamente limitado, como la interpretación de expresiones regulares.
Datos ampliados:
El concepto y la importancia del diseño de software;
El patrón de diseño de software es un resumen de la experiencia en diseño de software y un diseño que aparece repetidamente en el software. diseño Una descripción de la solución exitosa al problema.
Para registrar estas experiencias de diseño exitosas para uso futuro, los patrones de diseño de software generalmente contienen cuatro elementos básicos: nombre del patrón, problema, solución y efecto.
El nombre del patrón es en realidad un nombre que le ayudará a recordar. Es un término técnico utilizado en el diseño de software y ayuda a los diseñadores a comunicarse entre sí.
Los problemas describen los escenarios de diseño que enfrentan los diseñadores y se utilizan para indicarles cuándo usar patrones.
La solución describe los detalles del diseño, generalmente brindando el diagrama esquemático de la solución (como un diagrama de clases UML, un diagrama de secuencia, etc., o algunos diagramas esquemáticos) y descripciones de texto relacionadas, y si es posible También se proporcionan algunos ejemplos de código para proporcionar una comprensión más profunda de la solución.
La eficacia describe las fortalezas y debilidades de una solución de diseño. Estos impactos suelen estar orientados a atributos de calidad del software, como la escalabilidad y la reutilización.
La importancia de los patrones de diseño de software radica en la reutilización del diseño. Los patrones de diseño facilitan que los diseñadores aprendan o utilicen directamente soluciones de diseño que han demostrado ser exitosas sin perder tiempo en diseños repetidos. Algunos patrones de diseño incluso proporcionan diseños de diagramas de clases y ejemplos de código para brindar soporte directo para la documentación de diseño y el desarrollo de software.