Please enable JavaScript.
Coggle requires JavaScript to display documents.
Patrones de Diseño - Coggle Diagram
Patrones de Diseño
Patrones Creacionales
Factory Method
Propósito: Define una interfaz para crear objetos, pero deja que las subclases decidan qué clase instanciar.
Características: Delega la creación; usa herencia; desacopla el código cliente de las clases concretas.
-
-
-
Abstract Factory
Propósito: Provee una interfaz para crear familias de objetos relacionados sin especificar sus clases concretas.
Características: Agrupa fábricas individuales; garantiza consistencia entre productos; oculta la implementación.
Caso de uso: Crear una interfaz gráfica (UI) que debe renderizar botones y menús tanto para Windows como para MacOS.
-
Cuándo usarlo: Cuando el sistema debe ser independiente de cómo se crean sus productos y estos vienen en familias.
Builder
Propósito: Separa la construcción de un objeto complejo de su representación para crear diferentes representaciones con el mismo proceso.
-
Caso de uso: Un generador de consultas SQL donde vas agregando select, where, group by paso a paso.
Ventajas: Control fino sobre el proceso de construcción; código más legible que constructores gigantes.
Cuándo usarlo: Cuando el algoritmo para crear un objeto complejo debe ser independiente de las partes que lo componen.
Prototype
-
-
Caso de uso: En un videojuego, clonar enemigos (orcos/soldados) que tienen la misma configuración base en lugar de instanciarlos desde cero.
Ventajas: Reduce el costo de inicialización de objetos costosos; permite añadir y eliminar productos en tiempo de ejecución.
Cuándo usarlo: Cuando el costo de crear un objeto es alto (ej. conexiones a BD o cálculos complejos).
Singleton
Propósito: Garantiza que una clase tenga una única instancia y proporciona un punto de acceso global a ella.
-
-
-
Cuándo usarlo: Cuando se necesita exactamente una instancia disponible para todo el sistema (ej. configuración global).
Patrones Estructurales
Adapter
-
-
-
-
Cuándo usarlo: Cuando necesitas usar una clase existente pero su interfaz no coincide con la que necesitas.
Bridge
Propósito: Desacopla una abstracción de su implementación para que puedan variar independientemente.
Características: Divide una clase grande en dos jerarquías (Abstracción e Implementación); usa composición.
Caso de uso: Un control remoto universal (Abstracción) que funciona con diferentes marcas de TV (Implementación).
-
Cuándo usarlo: Cuando quieres evitar una explosión de subclases por combinaciones de características.
Composite
-
Características: Trata a objetos individuales y compuestos de manera uniforme; estructura recursiva.
-
-
Cuándo usarlo: Cuando necesitas representar jerarquías de objetos (menús, directorios).
Decorator
-
-
Caso de uso: Sistema de cafetería: Café base + Decorador Leche + Decorador Canela + Decorador Chocolate.
-
Cuándo usarlo: Cuando necesitas añadir comportamientos a objetos en tiempo de ejecución sin afectar a otros objetos.
Facade
Propósito: Proporciona una interfaz unificada y simplificada a un conjunto de interfaces de un subsistema.
-
Caso de uso: Una clase "HomeTheater" que con un método watchMovie() enciende la TV, baja las luces y pone el sonido.
-
Cuándo usarlo: Cuando quieres estructurar un subsistema en capas o simplificar una librería compleja.
Flyweight
-
-
Caso de uso: Renderizar un bosque en un juego: la textura del árbol se comparte, solo cambia la coordenada (X,Y).
-
-
Proxy
-
Características: Misma interfaz que el objeto real; control de acceso; carga perezosa (lazy loading).
Caso de uso: Cargar una imagen muy pesada en una web solo cuando el usuario hace scroll hasta ella (Virtual Proxy).
-
Cuándo usarlo: Cuando necesitas referencia inteligente a un objeto (protección, remoto, carga diferida).
-
-