¿Cuáles son los principales patrones de diseño de software?

Existen principalmente tres categorías de patrones de diseño de software:

1. Patrones basados ​​en la creación:

1. Problema con el patrón de fábrica simple. En el patrón de fábrica simple, la creación de clases depende de la clase de fábrica. Si desea expandir el programa, debe modificar la clase de fábrica. Esto viola el principio de apertura y cierre, por lo que el método de fábrica. Apareció el patrón. , solo necesita crear una interfaz de fábrica y múltiples clases de implementación de fábrica.

2. Patrón Abstract Factory El patrón Abstract Factory proporciona una interfaz para crear una serie de objetos relacionados o interdependientes sin especificar sus clases específicas. La diferencia con el patrón de método de fábrica es que el patrón de método de fábrica crea una fábrica que puede implementar múltiples objetos, mientras que el patrón de fábrica abstracto proporciona una interfaz de fábrica abstracta que define múltiples fábricas, y cada fábrica puede producir múltiples objetos.

3. Modo singleton El modo singleton puede garantizar que una clase tenga solo una instancia y proporcionar un punto de acceso global para acceder a ella. Al mismo tiempo, crea un único objeto dentro de la clase y establece los permisos para ello. que no se puede acceder a él fuera de la clase. Un objeto singleton garantiza que solo existe una instancia del objeto en una JVM.

4. Patrón constructor El patrón constructor separa una construcción compleja de su representación, de modo que un mismo proceso de construcción puede crear diferentes representaciones. En el programa, algunos componentes básicos que no cambiarán se combinan a través del constructor para construir objetos complejos y lograr la separación.

5. Modo prototipo: el modo prototipo utiliza instancias de prototipo para especificar los tipos de objetos que se crearán 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 similar al objeto original.

2. Modo estructural:

1. Modo adaptador El modo adaptador permite que las clases que no pueden funcionar juntas debido a interfaces incompatibles funcionen juntas, conectando dos incompatibles. La funcionalidad de interfaces independientes permite. trabajar juntos, con adaptadores actuando como intermediarios.

2. Modo de decoración: el modo decorador agrega dinámicamente algunas responsabilidades adicionales a un objeto, agrega algunas funciones nuevas a un objeto y requiere que el objeto de decoración y el objeto decorado implementen la misma interfaz. Contiene una instancia del objeto decorado. Además de la adición dinámica, también se puede revocar dinámicamente. Para lograr una forma dinámica, no se puede utilizar la herencia porque la herencia es estática.

3. Modo proxy El modo proxy es proporcionar un proxy para que otros objetos controlen el acceso a este objeto, es decir, crear una clase proxy de una clase y agregar funciones a sus funciones durante el proceso. proceso de acceso indirecto a la clase proxy.

4. Modo de apariencia El modo de apariencia proporciona una interfaz consistente para un conjunto de interfaces en un subsistema. El modo de apariencia define una interfaz de alto nivel, lo que hace que este subsistema sea más fácil de usar.

5. Modo puente El modo puente separa la parte abstracta de la parte de implementación para que puedan cambiar de forma independiente. El modo puente consiste en separar las cosas de su implementación específica para que puedan cambiar de forma independiente (de repente me viene a la mente el modo 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" que permite a los usuarios utilizar objetos individuales y objetos combinados de forma consistente.

7. Modo Flyweight: el modo Flyweight utiliza *tecnología compartida para soportar eficazmente una gran cantidad de objetos de grano fino. El objetivo principal del modo flyweight es lograr el intercambio de objetos, es decir, el grupo compartido cuando hay muchos objetos en el sistema, puede reducir la sobrecarga de memoria y reutilizar objetos similares existentes. Cree nuevos objetos, lo que puede reducir la creación de objetos, reducir la memoria del sistema y mejorar la eficiencia.

3. Modelo de comportamiento:

1. Modelo de estrategia:

El modelo de estrategia define una serie de algoritmos, los encapsula uno por uno y los utiliza. intercambiables, y los cambios en el algoritmo 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 de un algoritmo en una operación y difiere algunos pasos a subclases. Este patrón consiste en tener un método principal en una clase abstracta y luego definir 1...n métodos, que pueden ser métodos abstractos o reales. Defina una clase, herede la clase abstracta y anule el método abstracto. clase, se realiza la llamada a la subclase.

Los métodos de plantilla permiten a las subclases redefinir ciertos pasos específicos de un algoritmo sin cambiar la estructura del algoritmo, y encapsulan algunos métodos con pasos fijos y lógica fija en métodos de plantilla. Llamar a métodos de plantilla completa esos pasos específicos.

3. Patrón de observador:

El patrón de observador define una relación de dependencia de uno a muchos entre objetos. Cuando el estado de un objeto cambia, todos los objetos que dependen de él son objetos. notificado y actualizado automáticamente.

Es decir, cuando cambia el estado del observador, se notifica a todos los observadores. Este método de dependencia es bidireccional en la suscripción por correo electrónico y la suscripción RSS en el buzón de QQ, cuando los usuarios navegan por algunos blogs. Cuando vea el ícono RSS, simplemente, se ha suscrito al artículo. Si hay actualizaciones posteriores, el usuario será notificado a tiempo. Este fenómeno es el patrón típico del observador.

4. Patrón iterador:

El patrón iterador proporciona un método para acceder secuencialmente a cada elemento en un objeto agregado 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, lo que permite al iterador manejar la tarea transversal, simplificando así la clase agregada sin exponer las partes internas de la clase agregada; , Todas las clases en el JDK que usamos con frecuencia también son estas cosas básicas.

5. Modelo de cadena de responsabilidad:

El modelo de cadena de responsabilidad evita acoplar el remitente y el receptor de la solicitud, permitiendo que múltiples objetos reciban solicitudes y conecte estos objetos en una cadena. y la solicitud pasa a lo largo de esta 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 través de la cual 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 emisor puede parametrizar al cliente con diferentes solicitudes. Hay tres objetos en el modo: llamador, receptor y comando, que realizan la separación entre solicitud y ejecución; el llamador selecciona el comando a emitir y el comando especifica el receptor.

7. Modo Memo:

El modo Memo captura el estado interno de un objeto y guarda este estado fuera del objeto sin destruir la encapsulación. 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 que el objeto pueda restaurarse en el lugar apropiado. tiempo, es decir, para hacer una copia de seguridad.

8. Modo de estado:

El modo de estado permite que un objeto cambie su comportamiento cuando cambia su estado interno. Los objetos tienen múltiples estados y cada estado tiene un comportamiento específico.

9. Modo visitante:

El modo visitante separa principalmente la estructura de datos y las operaciones de datos. Agregue una interfaz a la clase visitada para proporcionar una interfaz externa para recibir visitantes. El visitante encapsula algunas operaciones complejas en la estructura visitada, desacopla la estructura y el algoritmo y tiene una excelente escalabilidad. En términos sencillos, es un método para separar la estructura y el comportamiento de los datos del objeto.

10. Patrón mediador:

El patrón mediador utiliza un objeto mediador para encapsular una serie de interacciones de objetos. El mediador elimina la necesidad de que los objetos se hagan referencia explícita entre sí, haciéndolos así. están débilmente acoplados y sus interacciones se pueden cambiar 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 que utiliza este identificador para interpretar el idioma. Las oraciones en son básicamente se utilizan dentro de este ámbito y tienen un ámbito de aplicación limitado, como la explicación de expresiones regulares, etc.

Información ampliada:

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 tema recurrente en el diseño de software. Una descripción de una solución exitosa a un problema de diseño. Para registrar estas experiencias de diseño exitosas y facilitar su uso futuro, los patrones de diseño de software generalmente contienen 4 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 en la comunicación entre diseñadores.

El problema describe el escenario de diseño al que se enfrenta el diseñador y se utiliza para indicarle en qué circunstancias utilizar este patrón.

La solución describe los detalles del diseño, generalmente brindando un diagrama esquemático de la solución (como diagramas de clases UML, diagramas de secuencia, etc., y tal vez algunos diagramas esquemáticos) y descripciones de texto relacionadas, si es posible. , también proporciona Se darán algunos ejemplos de código para proporcionar una comprensión profunda de la solución.

Los efectos describen las ventajas y desventajas de una solución de diseño. Estos efectos suelen estar orientados a los atributos de calidad del software, como escalabilidad, reutilización, etc.

La importancia de los patrones de diseño de software radica en la reutilización del diseño. Los patrones de diseño pueden facilitar que los diseñadores aprendan o utilicen directamente soluciones de diseño exitosas y comprobadas sin tener que dedicar tiempo a diseños repetidos. Algunos patrones de diseño incluso proporcionan diseños de diagramas de clases mostrados y ejemplos de código, brindando soporte directo para la documentación de diseño y el desarrollo de software.