Please enable JavaScript.
Coggle requires JavaScript to display documents.
Patrones de Diseño - Coggle Diagram
Patrones de Diseño
-
Patrones Estructurales
Decorator
Caso de uso:
- Agregar scroll a una ventana.
Ventajas:
- Flexibilidad, composición en tiempo real.
Características:
- Extiende comportamiento dinámicamente.
- Alternativa flexible a herencia.
Cuándo usarlo:
- Cuando quieres agregar funciones opcionales.
-
Facade
Ventajas:
- Fácil uso, desacopla subsistemas.
Caso de uso:
- API simple para trabajar con librerías internas complicadas.
Características:
- culta detalles internos.
- Reduce dependencias.
Cuándo usarlo:
- Cuando un sistema es difícil de usar o entender.
Propósito:
- Simplificar sistemas complejos con una interfaz única.
Composite
Caso de uso:
- Carpetas y archivos en un sistema operativo.
Ventajas:
- Simplicidad, escalabilidad.
Características:
- Estructura tipo árbol.
- Operaciones uniformes.
Cuándo usarlo:
- Cuando elementos pueden contener otros elementos.
Propósito:
- Tratar objetos individuales y agrupados de igual forma.
Flyweight
Caso de uso:
- Renderizar miles de árboles en un videojuego.
Ventajas:
- Eficiencia, menor uso de memoria.
Características:
- Distingue estado compartido y único.
- Ideal para grandes cantidades de objetos.
Cuándo usarlo:
- Cuando se crean muchos objetos casi iguales.
Propósito:
- Ahorrar memoria compartiendo datos comunes.
Bridge
Ventajas:
- Flexibilidad, escalabilidad.
Caso de uso:
- Controles de TV (abstracción) con distintas marcas (implementación).
Características:
- Permite cambiar ambas partes sin afectar la otra.
- Reduce clases duplicadas.
Propósito:
- Separar una abstracción de su implementación.
Cuándo usarlo:
- Cuando hay múltiples combinaciones de abstracción/implementación.
Proxy
Caso de uso:
- Controlar acceso a bases de datos o recursos remotos.
Ventajas:
*Seguridad, eficiencia.
Características:
- Intermediario entre cliente y recurso.
- Puede agregar funciones extras.
Cuándo usarlo:
- Cuando necesitas gestión adicional antes de acceder al objeto.
Propósito:
- Controlar acceso a un objeto real.
Adapter
Caso de uso:
- Usar un cargador europeo en un enchufe americano.
Ventajas:
- Reutilización, compatibilidad.
Características:
- Traduce llamadas.
- Evita modificar código existente.
Cuándo usarlo:
- Cuando una clase no encaja con la interfaz esperada.
Propósito:
- Hacer compatibles dos interfaces diferentes.
Patrones emergentes
-
DAO (Data Access Object)
-
Ventajas:
- Limpieza, mantenibilidad.
Características:
- Encapsula consultas.
- Evita duplicación.
Cuándo usarlo:
- Cuando se accede a datos frecuentemente.
Propósito:
- Separar acceso a datos del resto del sistema.
-
-
-
-
Patrones Creacionales
Abstract Factory
Caso de uso:
- Crear temas completos de UI (botones, menús, ventanas).
Ventajas:
- Consistencia visual, flexibilidad para cambiar familias.
Características:
- Garantiza compatibilidad entre objetos creados.
- Centraliza la creación de productos.
Cuándo usarlo:
- Cuando necesitas múltiples variantes de un mismo conjunto de objetos.
Propósito:
- Crear familias de objetos relacionados.
Builder
Características:
- Separa construcción de representación.
- Permite combinaciones flexibles.
Caso de uso:
- Crear vehículos con distintas configuraciones.
Ventajas:
- Código limpio, fácil creación de versiones diferentes.
Propósito:
- Construir objetos complejos paso a paso.
Cuándo usarlo:
- Cuando un objeto tiene muchas opciones o pasos de ensamblaje.
Factory Method
Caso de uso:
- Crear diferentes tipos de botones en una interfaz.
Ventajas:
- Extensible, reduce acoplamiento.
Características:
- Delegación de la creación a subclases.
- Facilita agregar nuevos tipos sin modificar código existente.
Cuándo usarlo:
- Cuando la aplicación necesita decidir qué objeto crear en tiempo de ejecución.
Propósito:
- Crear objetos sin especificar la clase exacta.
Prototype
Caso de uso:
- Duplicar personajes en un juego con atributos iguales.
Ventajas:
- Ahorra tiempo, evita reconstrucciones complejas.
Características:
- Basado en clonación.
- Útil para clases costosas de instanciar.
Cuándo usarlo:
- Cuando necesitas muchas copias con poca variación.
Propósito:
- Crear objetos copiando un modelo existente.
Singleton
Caso de uso:
- Gestor de configuración o conexión a base de datos.
Ventajas:
- Ahorra recursos, estado centralizado.
Características:
- Control de acceso centralizado.
- Se crea una sola vez.
Cuándo usarlo:
- Cuando solo debe existir un objeto que controle algo.
Propósito:
- Garantizar una única instancia global.