Varios patrones de diseño comunes en Java (tutorial de patrones de diseño de Java para principiantes)
1. Modelo de fábrica: las clases de cliente y las clases de fábrica están separadas. Cada vez que un consumidor necesita un determinado producto, sólo tiene que solicitarlo a fábrica. Los consumidores pueden aceptar nuevos productos sin modificaciones. La desventaja es que cuando se modifica el producto, la clase de fábrica también debe modificarse en consecuencia. Tales como: cómo crearlo y cómo proporcionárselo al cliente.
2. Modo de construcción: separe la representación interna del producto del proceso de generación del producto, de modo que un proceso de construcción genere objetos de producto con diferentes representaciones internas. El modo de construcción permite cambiar la apariencia interna del producto de forma independiente y el cliente no necesita conocer los detalles de la composición interna del producto. El modo de construcción impone un proceso de construcción paso a paso.
3. Patrón de método de fábrica: la clase de fábrica central ya no es responsable de la creación de todos los productos, sino que deja el trabajo de creación específico a las subclases, convirtiéndose en una función de fábrica abstracta, solo responsable de dar fábricas específicas. interfaz que una clase debe implementar sin tocar los detalles de qué clase de producto se debe crear una instancia.
4. Modo de modelo original: especifique el tipo de objeto que se creará proporcionando un objeto prototipo y luego cree más objetos del mismo tipo copiando el objeto prototipo. El patrón del modelo original permite la adición o reducción dinámica de categorías de productos. Las categorías de productos no necesitan tener ninguna estructura jerárquica predeterminada. El patrón del modelo original es adecuado para cualquier estructura jerárquica. La desventaja es que cada clase debe estar equipada con un método de clonación.
5. Modo singleton: el modo singleton garantiza que solo haya una instancia de una determinada clase, crea una instancia y proporciona esta instancia a todo el sistema. El patrón singleton solo debe usarse cuando existe un verdadero requisito de "instancia única".
6. Modo adaptador (transformador): transforma la interfaz de una clase en otra interfaz esperada por el cliente, de modo que dos clases que no pueden funcionar juntas debido a interfaces no coincidentes puedan trabajar juntas. La clase de adaptación puede devolver una instancia adecuada al cliente según los parámetros.
7. Patrón puente: desacople la abstracción y la implementación para que las dos puedan cambiar de forma independiente, es decir, la asociación fuerte entre ellas se convierte en una asociación débil, lo que significa que en un software La relación combinación / agregación se utiliza entre la abstracción y la implementación del sistema en lugar de la relación de herencia, de modo que los dos pueden cambiar de forma independiente.
8. Modo compuesto: el modo compuesto organiza los objetos en una estructura de árbol y se puede utilizar para describir la relación entre el todo y sus partes. El patrón de composición es un patrón que se ocupa de estructuras de árbol de objetos. El modo de composición expresa la relación entre la parte y el todo mediante una estructura de árbol. El modo de composición permite al cliente tratar los objetos componentes individuales de la misma manera que el objeto compuesto compuesto por ellos.
9. Modo de decoración: El modo de decoración extiende la funcionalidad de los objetos de forma transparente al cliente. Es una alternativa a la herencia y proporciona más flexibilidad que la herencia. Agregue funciones dinámicamente a un objeto y estas funciones se pueden deshacer dinámicamente. Agregar una gran cantidad de funcionalidades resultantes de permutaciones y combinaciones de algunas funcionalidades básicas.
10. Modo fachada: La comunicación externa con un subsistema debe realizarse a través de un objeto de fachada unificado. El patrón Facade proporciona una interfaz de alto nivel que facilita el uso de los subsistemas. Cada subsistema tiene solo una clase de fachada, y esta clase de fachada tiene solo una instancia, lo que significa que es un patrón singleton. Pero todo el sistema puede tener múltiples clases de fachada.
11. Modo peso mosca: PESO MOSCA se refiere al peso gallo en los combates de boxeo. El modo Flyweight admite de manera eficiente una gran cantidad de objetos detallados de forma compartida. La clave para lograr el máximo disfrute en el modelo de disfrute es distinguir el estado intrínseco y el estado extrínseco. El estado intrínseco se almacena dentro del peso de la mosca y no cambiará con los cambios en el medio ambiente. El estado externo cambia con los cambios en el medio ambiente. Los estados extrínsecos no pueden afectar a los estados intrínsecos, son independientes entre sí. Distinga el estado que se puede compartir y el estado que no se puede compartir de la clase normal y elimina el estado que no se puede compartir de la clase. El cliente no puede crear directamente el objeto compartido, pero debe utilizar un objeto de fábrica para crear el objeto compartido. El modo Flyweight reduce en gran medida la cantidad de objetos en la memoria.
12. Modo proxy: el modo proxy proporciona un objeto proxy para un determinado objeto, y el objeto proxy controla la referencia al objeto fuente. Agencia es cuando una persona o institución actúa en nombre de otra persona o institución.
En algunos casos, el cliente no quiere o no puede hacer referencia directa a un objeto, y el objeto proxy puede actuar directamente como intermediario entre el cliente y el objeto de destino. El cliente no puede distinguir entre un objeto de tema proxy y un objeto de tema real. El modo proxy no conoce el objeto proxy real, pero solo contiene una interfaz del objeto proxy. En este momento, el objeto proxy no puede crear el objeto proxy y otros roles en el sistema lo pueden pasar.
13. Modelo de cadena de responsabilidad: en el modelo de cadena de responsabilidad, muchos objetos están conectados por la referencia de cada objeto a su familia subordinada para formar una cadena. La solicitud asciende en la cadena hasta que un objeto de la cadena decide manejar la solicitud. El cliente no sabe qué objeto de la cadena maneja finalmente la solicitud, y el sistema puede reorganizar dinámicamente la cadena y asignar responsabilidades sin afectar al cliente. El procesador tiene dos opciones: aceptar la responsabilidad o pasarla a la siguiente parte. En última instancia, ningún objeto receptor puede aceptar una solicitud.
14. Modo de comando: el modo de comando encapsula una solicitud u operación en un objeto. El patrón de comando separa la responsabilidad de emitir comandos y la responsabilidad de ejecutar comandos y las delega a diferentes objetos. El modo de comando permite que la parte solicitante sea independiente de la parte remitente, de modo que la parte solicitante no necesita conocer la interfaz de la parte que recibe la solicitud, y mucho menos cómo se recibe la solicitud y si, cuándo y cómo se realiza la operación. se ejecuta de. El sistema admite la deshacer de comandos.
15. Modo intérprete: Dado un idioma, el modo intérprete puede definir una representación de su gramática y proporcionar un intérprete al mismo tiempo. Los clientes pueden utilizar este intérprete para interpretar oraciones en este idioma. El patrón Intérprete describe cómo interpretar estas declaraciones utilizando un diseño de patrón, dada una gramática simple. El lenguaje mencionado en el patrón de intérprete se refiere a cualquier combinación que cualquier objeto de intérprete pueda interpretar. En el modo intérprete, es necesario definir una estructura jerárquica de clases de comando que representan la gramática, es decir, una serie de reglas de combinación. Cada objeto de comando tiene un método de interpretación, que representa la interpretación del objeto de comando. Cualquier permutación y combinación de objetos en una jerarquía de objetos de comando es un lenguaje.
16. Subpatrón iterativo: El subpatrón iterativo permite el acceso secuencial a los elementos de una colección sin exponer la representación interna de la colección. El agregado formado por la unión de varios objetos se denomina agregación. Un objeto de agregación es un objeto contenedor que puede contener un grupo de objetos. El subpatrón de iteración encapsula la lógica de iteración en un subobjeto separado, separado de la colección misma. El subpatrón iterativo simplifica la interfaz de agregación. Cada objeto agregado puede tener uno o más subobjetos iteradores y el estado de iteración de cada iterador puede ser independiente entre sí. El algoritmo iterativo puede variar independientemente del rol de agregación.
17. Patrón Mediador: El Patrón Mediador empaqueta una serie de formas para que los objetos interactúen de modo que estos objetos no tengan que interactuar obviamente entre sí. Esto les permite acoplarse libremente. Cuando la interacción entre algunos objetos cambia, no afectará inmediatamente la interacción entre otros objetos. Asegúrese de que estos efectos se puedan cambiar independientemente unos de otros. El patrón Mediador convierte interacciones de muchos a muchos en interacciones de uno a muchos. El patrón mediador abstrae el comportamiento y la colaboración de los objetos y maneja el comportamiento a pequeña escala de los objetos por separado de las interacciones con otros objetos.
18. Modo Memo: El objeto memo es un objeto que se utiliza para almacenar una instantánea del estado interno de otro objeto. El propósito del patrón memo es capturar, externalizar y almacenar el estado de un objeto sin destruir la encapsulación, de modo que el objeto pueda restaurarse a su estado almacenado en un momento apropiado en el futuro.
19. Patrón de observador: el patrón de observador define una relación de dependencia de varios equipos, lo que permite que varios objetos de observador monitoreen un determinado objeto sujeto al mismo tiempo. Cuando este objeto de tema cambia de estado, notifica a todos los objetos observadores, permitiéndoles actualizarse automáticamente.
20. Patrón de estado: El patrón de estado permite que un objeto cambie su comportamiento cuando cambia su estado interno. El objeto parece haber cambiado de clase. El patrón de estado envuelve el comportamiento del objeto en estudio en diferentes objetos de estado. Cada objeto de estado pertenece a una subclase de una clase de estado abstracto. La intención del patrón de estado es permitir que un objeto cambie su comportamiento cuando cambia su estado interno. El patrón de estado requiere la creación de una subclase de la clase de estado para cada estado que pueda obtener el sistema.
Cuando el estado del sistema cambia, el sistema cambia la subclase seleccionada.
21. Patrón de estrategia: el patrón de estrategia apunta a un conjunto de algoritmos y encapsula cada algoritmo en una clase independiente con la misma interfaz, para que puedan reemplazarse entre sí. El patrón de estrategia permite que el algoritmo cambie sin afectar al cliente. El patrón estratégico separa el comportamiento del entorno. La clase de entorno es responsable de mantener y consultar la clase de comportamiento, y se proporcionan varios algoritmos en clases de estrategia específicas. Dado que el algoritmo y el entorno son independientes, la adición, eliminación y modificación del algoritmo no afectará al entorno ni al cliente.
22. Patrón de método de plantilla: el patrón de método de plantilla prepara una clase abstracta, implementa parte de la lógica en forma de métodos concretos y constructores concretos, y luego declara algunos métodos abstractos para obligar a la subclase a implementar el lógica restante. Diferentes subclases pueden implementar estos métodos abstractos de diferentes maneras y, por tanto, tener diferentes implementaciones de la lógica restante. Primero desarrolle un marco lógico de nivel superior y deje los detalles de la lógica a subclases específicas.
23. Patrón de visitante: El propósito del patrón de visitante es encapsular algunas operaciones que se aplican a ciertos elementos de la estructura de datos. Una vez que es necesario modificar estas operaciones, la estructura de datos que acepta esta operación puede permanecer sin cambios. El patrón de visitante es adecuado para sistemas con estructuras de datos relativamente indeterminadas. Desacopla el acoplamiento entre la estructura de datos y las operaciones que actúan sobre la estructura, permitiendo que el conjunto de operaciones evolucione con relativa libertad. El patrón de visitante facilita la adición de nuevas operaciones al agregar una nueva clase de visitante. El patrón de visitante concentra comportamientos relacionados en un objeto de visitante en lugar de dispersarlos en clases de nodos. Cuando utilice el patrón Visitante, coloque tanta lógica de exploración de objetos como sea posible en la clase Visitante en lugar de en sus subclases. El patrón de visitante puede acceder a clases de miembros que pertenecen a diferentes jerarquías en varias jerarquías de clases.