Patrones de Diseño
Soluciones reutilizables para problemas comunes de diseño de software.
23 lecciones
Abstract Factory: Familias de Objetos
Crea familias de objetos relacionados sin especificar sus clases concretas — garantiza compatibilidad entre productos de la misma familia.
Adapter: El Traductor de Interfaces
Hace que interfaces incompatibles trabajen juntas — envuelve una clase antigua o externa detrás de la interfaz que tu sistema espera sin modificar ninguno de los lados.
Bridge: Desacoplando la Abstracción
Divide una clase grande en dos jerarquías independientes — abstracción e implementación — para que ambas evolucionen sin afectarse mutuamente.
Builder: Construcción Paso a Paso
Construye objetos complejos paso a paso — el mismo proceso de construcción puede producir diferentes representaciones usando una interfaz fluida.
Cadena de Responsabilidad
Pasa una solicitud a lo largo de una cadena de manejadores — cada uno decide procesarla o pasarla al siguiente, desacoplando emisor de receptor.
Command: Encapsulando Peticiones
Transforma una petición en un objeto autónomo — habilitando deshacer/rehacer, colas, registro y ejecución diferida de operaciones.
Composite: Estructuras en Árbol
Compone objetos en estructuras de árbol y trata objetos individuales y grupos de forma uniforme — itera un sistema de archivos igual sea un archivo o una carpeta.
Decorator: Añadiendo Superpoderes
Añade comportamiento a objetos dinámicamente envolviéndolos — compón capacidades en lugar de crear una explosión de subclases.
Facade: La Cara Amigable del Sistema
Proporciona una interfaz simplificada a un subsistema complejo — oculta el caos detrás de un único punto de entrada limpio sin eliminar la complejidad para quienes la necesitan.
Factory Method: El Constructor Virtual
Delega la creación de objetos a las subclases — desacopla al cliente de las clases concretas que instancia.
Flyweight: Compartir para Ahorrar Memoria
🔒Cabe más objetos en RAM compartiendo estado común — separa datos intrínsecos (compartidos) de extrínsecos (únicos) para evitar duplicar objetos pesados.
Iterator: Recorriendo Colecciones
🔒Recorre elementos de cualquier colección sin exponer su estructura interna — el cliente nunca necesita saber si es una lista, árbol o grafo.
Mediator: Comunicación Centralizada
🔒Restringe la comunicación directa entre objetos — fuerza la colaboración a través de un mediador para reducir dependencias caóticas muchos-a-muchos.
Memento: Deshacer con Instantáneas
🔒Captura y restaura el estado interno de un objeto sin violar la encapsulación — implementa Deshacer almacenando instantáneas de estados pasados.
Observer: El Sistema de Suscripciones
🔒Permite que los objetos se suscriban a eventos y sean notificados automáticamente — desacopla los productores de eventos de los consumidores sin que ninguno sepa del otro.
Prototype: Clonación de Objetos
🔒Copia objetos existentes sin depender de sus clases — clona configuraciones complejas en lugar de reconstruirlas desde cero.
Proxy: El Intermediario de Control
🔒Proporciona un sustituto que controla el acceso a otro objeto — úsalo para carga perezosa, control de acceso, registro o caché sin cambiar el objeto real.
Patrón Repository
🔒Abstrae el acceso a datos detrás de una interfaz para que la lógica de negocio nunca sepa si los datos vienen de una base de datos, caché o API — y las pruebas se convierten en un simple cambio.
Singleton: La Instancia Única
🔒Asegura que una clase tenga solo una instancia y proporciona un punto de acceso global — pero el abuso crea estado global oculto y dificulta las pruebas.
State: Comportamiento Basado en Estado
🔒Permite que un objeto altere su comportamiento cuando su estado interno cambia — reemplaza los condicionales de estado con objetos de estado polimórficos.
Strategy: Intercambio de Algoritmos
🔒Define una familia de algoritmos, encapsula cada uno en su propia clase y hazlos intercambiables en tiempo de ejecución — elimina los condicionales seleccionando el comportamiento mediante composición.
Template Method: Esqueleto del Algoritmo
🔒Define el esqueleto de un algoritmo en una superclase, pero permite a las subclases sobrescribir pasos específicos sin cambiar su estructura.
Visitor: Nuevas Operaciones Sin Cambiar Clases
🔒Añade nuevas operaciones a una jerarquía de objetos sin modificar las clases — el visitor porta la operación, los elementos simplemente la aceptan.