Skip to content

Instantly share code, notes, and snippets.

@LaChivaloca69
Last active September 12, 2025 00:32
Show Gist options
  • Select an option

  • Save LaChivaloca69/52e77f435d3a1072853bfd5151d9c294 to your computer and use it in GitHub Desktop.

Select an option

Save LaChivaloca69/52e77f435d3a1072853bfd5151d9c294 to your computer and use it in GitHub Desktop.

Alvarado Cardona Antonio

Fecha: 11/09/2025

Resumen: Sumérgete en los patrones de diseño – Alexander Shvets

📖 Sobre el libro

  • Guía práctica que explica los 23 patrones de diseño clásicos (Banda de los Cuatro).
  • Enseña cuándo y por qué aplicar un patrón, no solo a memorizarlos.
  • Divide los patrones en tres categorías: creacionales, estructurales y de comportamiento.

🧩 Los 23 patrones de diseño

1. Creacionales (cómo crear objetos)

1 Factory Method → define una interfaz para crear objetos, pero permite que las subclases decidan cuál clase instanciar.

2 Abstract Factory → fabrica familias de objetos relacionados sin especificar sus clases concretas.

3 Builder → construye objetos complejos paso a paso.

4 Prototype → crea nuevos objetos copiando (clonando) una instancia existente.

5 Singleton → asegura que una clase tenga una sola instancia en todo el programa.

2. Estructurales (cómo organizar clases y objetos)

  1. Adapter → convierte la interfaz de una clase en otra que el cliente espera.
  2. Bridge → separa una abstracción de su implementación para que puedan evolucionar independientemente.
  3. Composite → organiza objetos en estructuras jerárquicas tipo árbol, para tratar elementos individuales y compuestos de la misma manera.
  4. Decorator → añade responsabilidades a un objeto de manera dinámica sin alterar su clase.
  5. Facade → proporciona una interfaz simple para un sistema complejo.
  6. Flyweight → reduce el consumo de memoria compartiendo objetos comunes.
  7. Proxy → actúa como sustituto o representante de otro objeto para controlar su acceso.

3. De comportamiento (cómo interactúan los objetos)

  1. Chain of Responsibility → pasa una solicitud a lo largo de una cadena de manejadores hasta que uno la procesa.
  2. Command → encapsula una petición como un objeto, permitiendo deshacer/rehacer operaciones.
  3. Interpreter → define una gramática y un intérprete para interpretar frases en ese lenguaje.
  4. Iterator → permite recorrer los elementos de una colección sin exponer su representación interna.
  5. Mediator → centraliza la comunicación entre objetos, evitando que estén acoplados directamente.
  6. Memento → guarda el estado de un objeto para restaurarlo después.
  7. Observer → define una relación de suscripción para que varios objetos reciban notificaciones de cambios en otro objeto.
  8. State → permite que un objeto cambie su comportamiento cuando cambia su estado interno.
  9. Strategy → define una familia de algoritmos y permite intercambiarlos en tiempo de ejecución.
  10. Template Method → define el esqueleto de un algoritmo y deja que las subclases definan algunos pasos.
  11. Visitor → separa un algoritmo de la estructura de objetos sobre la que opera.

👉 Resumen corto:

  • Creacionales = cómo crear objetos
  • Estructurales = cómo organizarlos
  • De comportamiento = cómo interactúan

🌟 Importancia de aprender patrones

  • Resuelven problemas comunes de diseño de software.
  • Facilitan la comunicación entre programadores con un lenguaje común.
  • Mejoran la calidad del código, haciéndolo más flexible y mantenible.
  • Evitan reinventar la rueda con soluciones ya probadas.
  • Son clave en el mundo profesional: trabajo en equipo, entrevistas y proyectos grandes.

✅ Conclusión

Los patrones de diseño son como una caja de herramientas probadas que permiten organizar, comunicar y mantener mejor el software.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment