Please enable JavaScript.
Coggle requires JavaScript to display documents.
Patrones de diseño, Patrones Creacionales, Patrones
Estructural, Patrones…
Patrones de diseño
Adapter
-
Ventajas:
- Reutiliza códigos existente.
- Facilita integración con librerías externas.
Características principales:
- Traduce métodos entre interfaces.
- Envuelve objetos existentes.
- No modifica código original.
-
-
Proxy
-
Ventajas:
- Reduce costo inicial.
- Controla acceso y seguridad.
Características principales:
- Controla creación, acceso o protección.
- Puede ser remoto, virtual o de seguridad.
- Actúa como sustituto.
Cuándo usarlo:
Cuando necesitas retrasar, limitar o monitorear el acceso a un objeto.
-
Facade
Caso de uso:
Subproceso de "generar factura" que internamente valida, calcula impuestos y envía correo.
Ventajas:
- Reduce curva de aprendizaje.
- Desacopla cliente del sistema interno.
Características principales:
- Esconde complejidad interna.
- Punto de entrada único.
- Simplifica uso de bibliotecas grandes.
-
-
Factory Method
Caso de uso:
Un sistema de notificaciones que debe crear
correos, SMS o push dependiendo del tipo.
Ventajas:
- Reduce el acoplamiento
- Facilita agregar nuevas clases sin modificar
código existente.
Características principales:
- Desacopla la creación del objeto de su uso.
- Usa métodos en clases creadoras que las subclases redefinen.
- Fomenta la extensibilidad.
-
-
Builder
Características principales:
- Separa construcción y representación.
- Permite diferentes representaciones del mismo proceso
- Útil cuando el objeto tiene muchas configuraciones.
-
-
Ventajas:
- Códigos de creación más legibles.
- Flexibilidad para crear múltiples variaciones.
-
Singleton
-
Características principales:
- Control de acceso centralizado.
- Constructor privado.
- Provee punto de acceso estático
-
Ventajas:
- Acceso global y único
- Ahorro de recursos compartidos
-
Composite
-
Características principales:
- Estructuras jerárquicas (árboles)
- Métodos comunes para todos los nodos.
- Recursividad natural.
-
Ventajas:
- Simplifica manejo de estructuras complejas.
- Permite operaciones recursivas uniformes.
-
Flyweight
-
Ventajas:
- Consumo mínimo de memoria.
- Rendimiento optimizado.
Características principales:
- Divide estado intrínseco (compartido) y extrínseco.
- Ahorra memoria en gran escala
- Útil para miles / millones de objetos.
-
-
Abstract Factory
Caso de uso:
Interfaz que puede cambiar entre "tema claro" y
"tema oscuro": botones, menús, cuadros de texto.
Ventajas:
- Garantiza compatibilidad entre productos.
- Facilita intercambiar familias enteras de objetos.
Características principales:
- Devuelve múltiples objetos compatibles entre sí.
- Evita mezclas incorrectas de productos.
- Encapsula varios Factory Methods
-
-
Command
-
Ventajas:
- Registro y ejecución diferida.
- Control de transacciones.
Características principales:
- Permite deshacer / rehacer.
- Cola de comandos.
- Invocadores y receptores separados.
-
-
-
Visitor
-
Ventajas:
- Facilita agregar funcionalidades.
- Separa lógica de operaciones.
Características principales:
- Permite doble despacho.
- Ideal para estructuras complejas.
- Desacopla operaciones y estructura.
-
-
Observer
-
Ventajas:
- Sincronización automática.
- Extensible
Características principales:
- Relación 1 -> N.
- Suscripción y notificación.
- Desacoplamiento fuerte.
-
-
-
Mediator
Caso de uso:
Componentes de una ventana ( botón, input, lista).
Ventajas:
- Comunicación limpia.
- Facilita mantenimiento.
Características principales:
- Evita referencias directas entre objetos.
- Reduce acoplamiento.
- El mediador coordina comportamiento.
-
-
Strategy
-
Ventajas:
- Flexibilidad.
- Fácil comparación de algoritmos.
Características principales:
- El algoritmo se encapsula.
- Cambio en tiempo de ejecución.
- Reemplaza condicionales.
-
-
-
Chain of Responsibility
-
Ventajas:
- Extensible sin modificar código.
- Orden dinámico.
Características principales:
- Cada nodo decide procesarlo o pasarlo.
- Desacopla emisor y receptor.
- Flujo flexible.
-
-
Iterator
Características principales:
- Interfaz común para recorrer.
- Mantiene estado de iteración.
- Simplifica trabajo del cliente.
Caso de uso:
Recorrer listas, árboles o colecciones personalizadas
-
Ventajas:
- Consistencia.
- Polimorfismo entre colecciones.
-
Bridge
Características principales:
- Permite cambiar abstracción e implementación
por separación.
- Reduce la explosión de subclases.
- Se base en composición.
Caso de uso:
Formas geométricas (círculo, rectángulo) con diferentes
APIs de dibujo.
Ventajas:
- Extensibilidad alta.
- Reducción de complejidad de herencia.
-
-
Prototype
Características principales:
- Evitar creación costosa desde cero.
- Usa clonación profunda o superficial.
- Útil para duplicar objetos configurados.
-
-
Ventajas:
- Rápido para crear grandes cantidades.
- Reduce duplicación de código.
-
Decorator
-
Características principales:
- Envuelve objetos.
- Evita crear subclases para cada combinación posible.
- Composición flexible.
Caso de uso:
Agregar cifrado, compresión o logs a un flujo de datos.
Ventajas:
- Mayor flexibilidad que la herencia.
- Funcionalidad añadida sin modificar clases originales.
-
DAO (Data Access Object)
Caso de uso:
Repositorios en aplicaciones enterprise (C#, Java, PHP)
Ventajas:
- Mantenimiento simple.
- Cambio de DB sin afectar lógica.
Características principales:
- Operaciones CRUD.
-Oculta tecnología de persistencia.
- Capa dedicada.
-
-
Memento
-
Ventajas:
- Deshacer sin exponer detalle internos.
- Estados claros y manejables.
Características principales:
- Captura estado interno.
- Permite revertir cambios.
- El memento es inmutable.
-
-
State
Caso de uso:
Máquina expendedoras con estados: "Sin stock", "Aceptando monedas", "Entregando producto".
Ventajas:
- Código limpio.
- Fácil de extender.
Características principales:
- Encapsula estados como clases.
- Cambia comportamiento dinámicamente.
- Evita grandes bloques if / else
-
-
-
Template Method
Características principales:
- La clase base define el esqueleto.
- Subclases implementan pasos concretos.
- Garantiza orden de ejecución.
-
-
Ventajas:
- Reutilización del flujo general.
- Consistencia del proceso.
-
-
-
-
-
-
-