Definición: El patrón de fábrica abstracto proporciona una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas. Este patrón es particularmente útil cuando un sistema necesita ser independiente de cómo se crean, componen y representan sus productos.
Uso de ejemplo: Imagine desarrollar un software de simulación que pueda representar diferentes entornos (tierra, mar, aire). Usando el patrón de fábrica abstracto, puede definir una interfaz de fábrica con métodos para crear varios tipos de animales y plantas, y luego implementar diferentes fábricas concretas para cada entorno, cada una sabiendo cómo crear objetos específicos para ese entorno.
Definición: El patrón de método de fábrica define una interfaz para crear un objeto, pero permite que las subclases decidan qué clase instanciar. Este patrón delega la responsabilidad de la instanciación de objetos a una subclase, promoviendo el acoplamiento suelto.
Uso de ejemplo: una aplicación de gestión de documentos puede usar el método de fábrica para crear diferentes tipos de documentos (texto, gráficos, presentaciones). Cada tipo de documento tendrá su clase concreta, y el método de fábrica en la clase base decidirá qué documento crear según la entrada del usuario, aislando así el código del cliente de las clases de documentos concretos.
Definición: El patrón del constructor separa la construcción de un objeto complejo de su representación, lo que permite la misma construcción para diferentes representaciones. Este patrón es útil cuando un objeto debe crearse en múltiples pasos, y el proceso de construcción debe ser el mismo para diferentes representaciones.
Uso de ejemplo: considere un constructor de automóviles que puede crear diferentes tipos de automóviles (deportes, SUV, convertibles). Usando el constructor, el proceso de construcción de estos automóviles se puede estandarizar en diferentes pasos (chasis de construcción, motor, interiores), mientras que los detalles específicos de cada tipo de automóvil se manejan a través de diferentes constructores de concreto.
Definición: El patrón de cadena de responsabilidad permite pasar una solicitud a lo largo de una cadena de manejadores. Cada manejador decide si procesar la solicitud o pasarla al siguiente controlador de la cadena.
Uso de ejemplo: en un sistema de servicio de ayuda, una solicitud de soporte puede pasar a través de diferentes niveles de soporte técnico. Cada nivel examina la solicitud y decide si puede manejarla o pasarla al siguiente nivel. Esto evita acoplar el remitente de solicitud con el receptor específico y distribuye la responsabilidad entre diferentes objetos.
Definición: El patrón de comando transforma una solicitud en un objeto independiente que contiene toda la información necesaria para realizar la acción. Esto permite la parametrización de métodos con diferentes solicitudes, retrasando o haciendo cola la ejecución de una solicitud y admitiendo operaciones de deshacer.
Uso de ejemplo: en una aplicación de automatización de inicio, los comandos como encender/apagar las luces o ajustar el termostato pueden encapsularse en los objetos de comando. Estos comandos pueden ser enviados por diferentes dispositivos, como teléfonos inteligentes o tabletas, y se pueden programar o deshacer según sea necesario.
Definición: El patrón prototipo permite copiar objetos existentes sin hacer que el código dependa de sus clases. Cada clase prototipo implementa la interfaz prototipo, que proporciona un método para clonar a sí mismo.
Uso de ejemplo: en un juego, en lugar de crear objetos desde cero cada vez en una escena, un objeto 'prototipo' puede clonarse para crear copias idénticas. Esto es particularmente útil en escenarios de juegos donde la creación y destrucción de muchos objetos similares puede ser intensivo en el rendimiento.
Definición: El patrón Memento permite guardar y restaurar el estado anterior de un objeto sin revelar los detalles de su implementación interna. Este patrón es útil para implementar características como deshacer en aplicaciones que requieren la capacidad de volver a estados anteriores.
Uso de ejemplo: imagine desarrollar un editor de texto que permita a los usuarios deshacer los cambios de texto. Cada vez que se realiza una edición significativa, el estado del editor se guarda en un objeto Memento. Si el usuario desea deshacer los cambios, el editor puede restaurar el estado de uno de estos objetos de recuerdo, volviendo el texto a su estado anterior.
Definición: El patrón del mediador define un objeto que centraliza la comunicación compleja y las dependencias entre los objetos conectados, promoviendo el acoplamiento suelto y evitando que los objetos se refieran directamente entre sí. Esto permite un mejor manejo de interacciones complejas y mejora la capacidad de mantenimiento del código.
Uso de ejemplo: considere una aplicación de control de tráfico aéreo. En lugar de permitir que cada aeronave se comunique directamente con todos los demás (creando un sistema extremadamente complejo), un mediador, en este caso, la torre de control, maneja todas las comunicaciones. Los aviones se comunican solo con la torre de control, que luego dirige las acciones de cada aeronave, como cuándo y dónde aterrizar.
Definición: El patrón de método de plantilla define el esqueleto de un algoritmo en un método, diferiendo algunos pasos a ejecutar por subclases. Esto permite redefinir ciertos pasos de un algoritmo sin cambiar la estructura del algoritmo.
Uso de ejemplo: piense en un marco de prueba automatizado. El método de plantilla se puede utilizar para definir una estructura de prueba estándar, donde el método de plantilla establece el flujo de ejecución de la prueba (configuración, ejecución, limpieza). Las subclases de prueba específicas pueden personalizar cada paso implementando métodos para la configuración, la ejecución de la prueba real y las operaciones de limpieza después de la prueba.
Definición: El patrón del observador establece una relación de uno a muchos entre objetos para que cuando un objeto cambie de estado, todos sus dependientes se notifican y se actualizan automáticamente. Este patrón es particularmente útil para implementar sistemas de notificación de eventos distribuidos, donde los cambios en un estado deben reflejarse en tiempo real en otros sistemas o componentes.
Uso de ejemplo: considere un sistema de gestión climática en un edificio inteligente. Los sensores de temperatura (editores) monitorean continuamente el entorno y, en caso de cambios significativos, envían actualizaciones a varios dispositivos (observadores), como aires acondicionados y sistemas de calefacción, que se ajustan en consecuencia para mantener una temperatura óptima. De esta manera, el sistema de control climático puede reaccionar dinámicamente a las condiciones ambientales sin intervención humana directa, asegurando la comodidad y la eficiencia energética.
Definición: El patrón de estado permite que un objeto cambie su comportamiento cuando cambia su estado interno. Parece que el objeto está cambiando su clase. Este patrón es útil para manejar situaciones de cambio de estado complejos, reduciendo la necesidad de condiciones de ramificación (if-else o conmutador) dentro del código.
Uso de ejemplo: imagine desarrollar una aplicación para administrar el ciclo de vida de un pedido en línea. El pedido puede estar en varios estados, como "procesamiento", "enviado", "entregado". Usando el patrón de estado, puede definir una clase de OrderState abstracta con métodos como Process (), Ship () y Entrew (). Cada estado de concreto (por ejemplo, procesamiento de estatal, StippedState, EntrewedState) implementará estos métodos para manejar las transiciones de estado de manera adecuada. El contexto (por ejemplo, la clase de pedido) mantiene una referencia al estado actual y delega las operaciones de estado de estado a objetos de estado concretos, lo que permite que el comportamiento del orden cambie en función de su estado actual sin la intervención directa del código del cliente.
Definición: El patrón de estrategia es un patrón de comportamiento que permite definir una familia de algoritmos, encapsularlos en una clase dedicada y hacer que los objetos intercambiables dentro de ese contexto. Este enfoque permite variables algoritmos independientemente de los clientes que los usan.
Uso de ejemplo: imagine una aplicación de comercio electrónico que necesita implementar diferentes estrategias de cálculo de impuestos dependiendo del país del cliente. Con el patrón de estrategia, puede definir una interfaz TaxStrategy con un método Calculatetax () y luego implementar varias estrategias concretas para diferentes contextos fiscales, como UstaxStrategy, EutaxStrategy y AsiataxStrategy.
Definición: El patrón de iterador proporciona una forma de acceder a los elementos de un objeto agregado secuencial sin exponer su representación subyacente. Este patrón es particularmente útil para administrar diferentes modos de transversión de una colección.
Uso de ejemplo: considere una colección de datos como un árbol o un gráfico. Usando el patrón Iterator, puede proporcionar acceso uniforme a los elementos de estas estructuras de datos complejas sin que el código del cliente tenga que manejar las diferencias entre las diversas estructuras. Por ejemplo, podría tener diferentes iteradores como DropeFirStiterator y BreadThIrstiterator para atravesar un gráfico.
Definición: El patrón de visitante permite separar un algoritmo de la estructura de los objetos en los que opera. Este patrón proporciona una forma de agregar nuevas operaciones a las clases existentes sin modificarlas.
Uso de ejemplo: imagine tener un sistema de gestión del cliente en un contexto de seguro. El patrón de visitantes permite que un objeto atraviese una lista de clientes y les envíe mensajes personalizados con respecto al seguro.
Definición: El patrón del adaptador permite que las interfaces incompatibles funcionen juntas. Actúa como un puente entre dos interfaces incompatibles al transformar la interfaz de una clase existente en otra interfaz esperada por los clientes.
Uso de ejemplo: suponga que tiene una nueva interfaz para representar gráficos, pero una biblioteca existente ofrece una funcionalidad similar con una interfaz diferente. En lugar de reescribir la biblioteca existente, puede usar un adaptador para que la biblioteca existente funcione con la nueva interfaz de renderizado, lo que permite una integración perfecta.
Definición: El patrón del puente es un patrón estructural que separa una abstracción de su implementación, lo que les permite variar independientemente. Se utiliza para dividir una clase grande o un conjunto de clases estrechamente relacionadas en dos jerarquías separadas, la abstracción y la implementación, que pueden desarrollarse y modificarse de forma independiente.
Uso de ejemplo: en una aplicación de entrega de pizza, hay diferentes tipos de pizzas disponibles, cada una con su gusto único y diferentes tipos de restaurantes con diferentes estilos de cocina. Cuando se realiza un pedido para una pizza, la aplicación utiliza el patrón de puente para garantizar que la pizza esté compuesta de acuerdo con las preferencias del cliente y se cocine siguiendo el estilo específico del restaurante elegido. De esta manera, el patrón de puente facilita la integración entre los diferentes tipos de pizzas y los diversos estilos de cocina de los restaurantes, lo que permite una entrega eficiente y personalizada.
Definición: El patrón compuesto es un patrón estructural que permite tratar grupos de objetos y objetos individuales de manera uniforme. Este patrón organiza objetos en una estructura de árbol para representar jerarquías de parcialidad. Permite a los usuarios trabajar con objetos individuales y composiciones de objetos de manera uniforme.
Uso de ejemplo: Imagine tener un sistema de gestión de caja de regalo que contenga artículos individuales y otras cajas. El cliente crea una caja principal y agrega algunos elementos como libros y videojuegos, junto con una caja más pequeña que contiene un libro. Luego se calcula el precio total de todos los artículos dentro de la caja principal. El patrón compuesto permite tratar objetos individuales y composiciones de objetos de la misma manera, simplificar el código y hacer que las operaciones sean uniformes tanto en objetos individuales como en grupos de objetos.
Definición: El patrón del decorador es un patrón estructural que permite agregar responsabilidades adicionales a los objetos dinámicamente sin alterar su estructura a través de la herencia. Este patrón proporciona una alternativa flexible para derivar clases extendidas para extender la funcionalidad.
Uso de ejemplo: imagine tener un sistema de notificación. El patrón del decorador permite extender la funcionalidad de varias plataformas sociales. De esta manera, las notificaciones se pueden enviar a través de varios canales sin modificar directamente el código.
Definición: El patrón de fachada es un patrón estructural que proporciona una interfaz unificada a un conjunto de interfaces en un subsistema. Este patrón define una interfaz de alto nivel que hace que el subsistema sea más fácil de usar.
Uso de ejemplo: Considere un sistema complejo para administrar dispositivos multimedia en un automóvil, que incluye subsistemas de conectividad de audio, video y Bluetooth. Una fachada puede ofrecer una interfaz simple para iniciar música, detener video o administrar llamadas, ocultando la complejidad y las dependencias entre los subsistemas.
Definición: El patrón de peso mosca es un patrón estructural que utiliza compartir para soportar una gran cantidad de objetos de grano fino de manera eficiente. Es particularmente útil cuando una gran parte del estado de un objeto se puede compartir y hacer externo a él.
Uso de ejemplo: imagine tener una aplicación para administrar tipos de libros. Utiliza una fábrica para crear y compartir instancias de tipos de libros. De esta manera, si se solicita el mismo tipo de libro varias veces, se devuelve el mismo objeto en lugar de crear uno nuevo cada vez. Esto ahorra memoria y mejora el rendimiento general de la aplicación.
Definición: El patrón proxy proporciona un sustituto o marcador de posición para que otro objeto controle el acceso a él. Este patrón se usa cuando desea imponer restricciones al acceder a un objeto, una carga perezosa o proporcionar una localización transparente de un objeto en un entorno distribuido.
Uso de ejemplo: en el control de acceso a un sistema de archivos, se puede usar un proxy para controlar las operaciones de usuario en los archivos. El proxy verifica las credenciales de un usuario antes de permitir el acceso real al archivo, proporcionando seguridad adicional.
Definición: El patrón Singleton es un patrón creativo que garantiza que una clase solo tenga una instancia al tiempo que proporciona un punto de acceso global a esta instancia.
Uso de ejemplo: en una aplicación, el patrón Singleton se puede usar para administrar la configuración de la aplicación. Un objeto Singleton puede contener todas las configuraciones que permanecen constantes durante la ejecución de la aplicación y se pueden leer desde varias partes del programa.